使用扫描仪读取一系列行时出现问题

时间:2015-05-08 07:16:47

标签: java java.util.scanner

我试图读取以下格式的输入。

2
asdf
asdf
3
asd
df
2

以下是代码:

Scanner scanner = new Scanner(System.in);
int t = scanner.nextInt();
System.out.println(t);
while(t>0){

    String a = scanner.next();
    String b = scanner.next();
    int K = scanner.nextInt();
}       

但是当我正在扫描时,我会变空t=2a=""b=asdfK=asdf

无法找出问题所在。 2和asdf之间没有空格/新行。

我尝试使用scanner.nextLine()代替scanner.next(),但没有更改

2 个答案:

答案 0 :(得分:2)

nextInt()没有获取新行令牌,因此以下阅读将获得它。您可以在nextLine之后引入nextInt来跳过它:

Scanner scanner = new Scanner(System.in);
int t = scanner.nextInt();
scanner.nextLine(); // Skip the newline character
System.out.println(t);
while(t > 0) {
    String a = scanner.next();
    String b = scanner.next();
    int K = scanner.nextInt();
    scanner.nextLine(); // Skip the newline character
}

答案 1 :(得分:0)

我更喜欢的另一种方法:

Scanner scanner = new Scanner(System.in);
int t = Integer.parseInt(scanner.nextLine());
System.out.println(t);
while(t>0){
     String a = scanner.nextLine();
     String b = scanner.nextLine();
     int K = Integer.parseInt(scanner.nextLine());
}

但请注意,当输入不正确时,它会抛出NumberFormatException。