输入如: 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();
}
答案 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();
}
}