java Integer.parseInt(temp);
时间: 2023-06-08 15:05:14 浏览: 207
这段代码的作用是什么?
这段代码的作用是将字符串类型的temp转换为整型int类型。具体实现是通过调用Integer类的静态方法parseInt(String s)实现的。如果temp不能被解析为整数,则会抛出NumberFormatException异常。
相关问题
import java.util.Scanner; public class PTA01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = Integer.parseInt(sc.nextLine()); String input = sc.nextLine(); String[] strarr = input.split(" "); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = Integer.parseInt(strarr[i]); } SeceltSort(arr); } public static void SeceltSort(int[] arr) { for (int i = 0; i < arr.length; i++) { int temp = arr[i]; int index = i; boolean flag = false; for (int j = i; j < arr.length; j++) { if (temp > arr[j]) { temp = arr[j]; index = j; flag = true; } } if (flag == false) continue; temp = arr[i]; arr[i] = arr[index]; arr[index] = temp; if(i!=0) System.out.println(); for (int a = 0; a < arr.length; a++) { System.out.print(arr[a]); if (a!=arr.length-1) System.out.print(" "); } } } }
这段代码实现的是选择排序,输入一个整数 n 和 n 个整数,然后对这 n 个整数进行选择排序并输出每次排序后的结果。
具体实现过程:
首先通过 Scanner 对象读取输入,第一行是整数 n,第二行是 n 个整数,用 split 方法将第二行的字符串按空格分割成整数数组。
然后调用 SeceltSort 方法进行选择排序,遍历数组,每次找到未排序部分的最小值,将其与未排序部分的第一个元素交换位置。在交换位置后,输出当前排序结果。
最后的输出结果类似于:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
每行输出一个排序结果。
下面代码转化为c++代码 import java.util.*; public class Main { public static void main(String args[]) { Scanner scan = new Scanner(System.in); while (scan.hasNextLine()) { String company = scan.nextLine().trim(); String team = scan.nextLine().trim(); String result = scan.nextLine().trim(); String[] results = result.split(","); System.out.println(getResult(company,team,results)); } } private static String getResult(String company, String team, String[] results) { if(!results[0].equalsIgnoreCase(company) || !results[2].equalsIgnoreCase(team)){ return "Not Found"; } return parseScore(company, team, results[1]); } private static String parseScore(String company, String team, String result) { String[] resultItems = result.split("_"); String people = resultItems[0]; String score = resultItems[1]; String evaluate = resultItems[2]; StringBuilder sb = new StringBuilder(); sb.append(company.toUpperCase()) .append(",").append(people) .append("_").append(score) .append("_").append(convertResult(score,evaluate)) .append(",").append(team); return sb.toString(); } private static String convertResult(String score, String evaluate){ String replace = Integer.parseInt(score.trim()) >= 80 || isTop3(evaluate) ? "perfect" : "better"; int index1 = evaluate.indexOf("{"); int index2 = evaluate.indexOf("}"); return evaluate.substring(0,index1) + replace + evaluate.substring(index2 + 1); } private static boolean isTop3(String evaluate){ String sort = ""; char[] evaluates = evaluate.toCharArray(); for (int i =0; i < evaluates.length; i++){ char temp = evaluates[i]; if(!Character.isDigit(temp)){ break; } sort += Character.toString(temp); } return Integer.parseInt(sort) <= 3; } }
下面是将Java代码转换为C++的等效代码:
```cpp
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
string getResult(string company, string team, vector<string>& results) {
if (results[0] != company || results[2] != team) {
return "Not Found";
}
return parseScore(company, team, results[1]);
}
string parseScore(string company, string team, string result) {
stringstream ss(result);
string people, score, evaluate;
getline(ss, people, '_');
getline(ss, score, '_');
getline(ss, evaluate, '_');
stringstream output;
output << company << "," << people << "_" << score << "_" << convertResult(score, evaluate) << "," << team;
return output.str();
}
string convertResult(string score, string evaluate) {
int scoreValue = stoi(score);
if (scoreValue >= 80 || isTop3(evaluate)) {
return "perfect" + evaluate.substr(evaluate.find("}") + 1);
} else {
return "better" + evaluate.substr(evaluate.find("}") + 1);
}
}
bool isTop3(string evaluate) {
string sort = "";
for (char c : evaluate) {
if (!isdigit(c)) {
break;
}
sort += c;
}
return stoi(sort) <= 3;
}
int main() {
string line;
while (getline(cin, line)) {
string company = line;
getline(cin, line);
string team = line;
getline(cin, line);
string result = line;
vector<string> results;
stringstream ss(result);
string item;
while (getline(ss, item, ',')) {
results.push_back(item);
}
cout << getResult(company, team, results) << endl;
}
return 0;
}
```
在C++代码中,我们使用了`iostream`和`sstream`库来处理输入和输出。我们使用`getline`函数从标准输入逐行读取输入,并使用`stringstream`来将字符串分割为多个部分。
主要的逻辑函数 `getResult`,`parseScore` 和 `convertResult` 在C++中与Java中的实现几乎相同。
在主函数中,我们使用 `getline(cin, line)` 逐行读取输入,并将每行输入的内容存储在相应的变量中。然后,我们使用 `stringstream` 将结果字符串分割为多个部分,并存储在一个字符串向量中。
最后,我们调用 `getResult` 函数获取结果,并使用 `cout` 打印输出。
请注意,在C++中,字符串的比较使用 `==` 运算符而不是 `!=` 运算符。另外,C++ 中没有 `equalsIgnoreCase` 函数,我们可以直接使用 `==` 进行大小写敏感的比较。同时,我们使用 `stoi` 函数将字符串转换为整数。
这是一个等效的C++实现,但可能还有其他优化和改进的方式。
阅读全文