gpt4 book ai didi

java - 为什么键盘给出的循环迭代范围将自身算作一次迭代?

转载 作者:行者123 更新时间:2023-12-02 10:59:45 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com