缺少java中的最后一个输入

时间:2015-04-22 19:20:25

标签: java

输入如: 1 2 3 4,排列成一列,我的代码总是错过读取最后一个数字。怎么了? 这是代码:

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    while(sc.hasNextInt()){
        System.out.println(sc.nextInt());
    }
   sc.close();
}

1 个答案:

答案 0 :(得分:0)

问题在于'sc.hasNextInt()'由于在最后一个条目之后没有另一个int,程序将不会打印它。如果您将调用从'hasNextInt()'更改为'hasNext()',则代码应该有效(因为将读取最终的换行符)。

您会注意到以下代码在输入字符串的末尾有一个空格。你可以做类似的事情,并在sc.hasNext()时使用。另一方面,您可以以不同方式构造代码,以便不根据输入字符串中是否存在下一个字符/ int进行打印。

import java.util.*;

public class ScannerDemo {

public static void main(String[] args) {

  String s = "Hello World! 3 + 3.0 = 6 ";

  // create a new scanner with the specified String Object
  Scanner scanner = new Scanner(s);

  while (scanner.hasNext()) {
     // check if the scanner's next token is an int
     System.out.println("" + scanner.hasNextInt());

     // print what is scanned
     System.out.println("" + scanner.next());
  }

  // close the scanner
  scanner.close();
  }
}