计算字符串中的整数

时间:2015-01-16 03:42:11

标签: java java.util.scanner

我有一个名为line的字符串,它是一串整数。

String line = 1 2 3 4 5 65 70

我制作了一个名为lin for line的扫描仪。

Scanner lin = new Scanner(line);

我现在想要计算整数的数量。

我试过

while (lin.hasNextInt()){
    size++;
}

但它不起作用。 Java在编译时没有给出任何错误,但似乎只是在无限循环中运行。救命?可能是别的吗?

2 个答案:

答案 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

是另一种方法。 (但不检查它们是否是整数)