public class P7 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int range=scanner.nextInt();
for(int i=1;i<=range;i++){
String stringInput =scanner.nextLine();
String[] total =stringInput.split("\\s");
int length=total.length;
System.out.println(length);
}
}
}
如果您输入范围为 3,它将打印其长度为 1。但第一次迭代应在获取 stringInput 后打印长度。 此外,当您以字符串形式输入范围时,您将得到InputMismatchException。哪个是对的。那么问题出在哪里呢? 谢谢。
最佳答案
Scanner.nextInt()
仅消耗您输入的数字,并将“\n”保留在扫描仪缓冲区中。您可以在调用 Scanner.nextInt()
后立即使用 Scanner.next()
清除该缓冲区。
import java.util.Scanner;
public class StackOverflow {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int range=scanner.nextInt();
scanner.next();
for(int i=1;i<=range;i++){
String stringInput =scanner.nextLine();
String[] total =stringInput.split("\\s");
int length=total.length;
System.out.println(length);
}
scanner.close();
}
}
结果:
3
The asdfj
2
asldkja sfaslkj asdfljk
3
asdfjk asdfjlkasdf alksjdf asdflkj
4
关于java - 为什么键盘给出的循环迭代范围将自身算作一次迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51423774/