我有一个名为line的字符串,它是一串整数。
String line = 1 2 3 4 5 65 70
我制作了一个名为lin for line的扫描仪。
Scanner lin = new Scanner(line);
我现在想要计算整数的数量。
我试过
while (lin.hasNextInt()){
size++;
}
但它不起作用。 Java在编译时没有给出任何错误,但似乎只是在无限循环中运行。救命?可能是别的吗?
答案 0 :(得分:1)
通过调用hasNextInt()
,您只是在询问是否还有其他内容需要消费,但实际上并没有消费它。
试试这个:
while(lin.hasNextInt()) {
lin.nextInt(); // Consumes the int
size++;
}
话虽如此,还有其他方法可以解决这个问题(使用String.split()解析String输入,看看你拥有的是Integer
是一个好方法。)
String line = "1 2 3 4 5 65 70"
String parts[] = line.split("\\s");
int size = 0;
for(String part : parts) {
try {
Integer.parseInt(part);
size++;
} catch(NumberFormatException e) {
// What we parsed was NOT a number, catch the exception and move on.
}
}
System.out.println("Found " + size + " numbers.");
这样,如果您的输入包含" 1 a 2",您将考虑" a"在那里。当然,如果您的输入保证是所有数字和空格,您可以得到parts
的长度,但我不相信有保证的输入格式。
答案 1 :(得分:0)
String line ="1 2 3";
String array[] = line.split(" ");
value = array.length;
value = line.split(" ").length; // in one line
是另一种方法。 (但不检查它们是否是整数)