Java语言。所以我想输入一个整数数组,然后使用StringTokenizer打印出最大值。我知道如何使用整数来完成这个任务,但是当我尝试使用数组时,字符串到int命令(Integer.parseInt)失败了--无法从int转换为int[]。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String strTmp;
StringTokenizer strTok;
while ((strTmp = in.readLine()) != null && strTmp.length() != 0) {
strTok = new StringTokenizer(strTmp);
int[] c;
c = Integer.parseInt(strTok.nextToken());
int max = 0;
for (int i = 0; i < c.length; i++) {
if (c[i] > max) {
max = c[i];
}
}
System.out.println(max);
}
}
}我该如何解决这个问题,或者是否应该使用其他命令?
发布于 2013-12-01 11:44:33
你似乎对是否真的想要一个数组感到困惑。您正在解析单个值,但试图将该int分配给作为数组变量的c。您实际上并不需要这样做,因为您只需要记住当前的最大值,以及您刚才分析过的值:
int max = Integer.MIN_VALUE;
while (strTok.hasMoreTokens()) {
int value = Integer.parseInt(strTok.nextToken());
if (value > max) {
max = value;
}
}如果您真的想要一个数组,那么在解析它们之前,您需要知道它们有多少个,这是很棘手的。
另一种选择是创建一个List<Integer>
// First parse everything...
List<Integer> values = new ArrayList<>();
while (strTok.hasMoreTokens()) {
values.add(Integer.parse(strTok.nextToken());
}
// Then you can find the maximum value in the list就我个人而言,如果您只需要找到最大值,我更喜欢第一种方法。
发布于 2013-12-01 11:44:08
int[] c;
c = Integer.parseInt(strTok.nextToken());您正在尝试将单个整数对象分配给int数组。
相反,使用int[index] = Integer.parseInt(strTok.nextToken());
发布于 2013-12-01 11:44:20
Integer.parseInt(String)返回一个整数,而不是一个Integer array。必须将返回值Integer存储在int变量中,如下所示
int i = Integer.parseInt(String);必须迭代整数数组并将其索引值设置为返回的整数值
for (int i = 0; i < c.length; i++) {
c[i] = Integer.parseInt(strTok.nextToken());
if (c[i] > max) {
max = c[i];
}
}希望这能有所帮助!
https://stackoverflow.com/questions/20311712
复制相似问题