我试图读取以下格式的输入。
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=2
,a=""
,b=asdf
,K=asdf
无法找出问题所在。 2和asdf之间没有空格/新行。
我尝试使用scanner.nextLine()
代替scanner.next()
,但没有更改
答案 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。