gpt4 book ai didi

java - 使用 Scanner 在 Java 中扫描输入

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:56:16 27 4
gpt4 key购买 nike

此代码检查用户输入是否有效。如果它不是一个数字,它将继续循环直到它收到一个数字。之后它将检查该数字是否在界限内或小于界限。它将继续循环,直到收到入站号码。但我的问题是,当我打印选择时,它只显示插入的最后一个数字之后的前一个数字。为什么会这样?

public void askForDifficulty(){
System.out.println("Difficulty For This Question:\n1)Easy\n2)Medium\n3)Hard\nChoice: ");
int choice = 0;
boolean notValid = true;
boolean notInbound = true;
do{
while(!input.hasNextInt()){
System.out.println("Numbers Only!");
System.out.print("Try again: ");
input.nextLine();
}
notValid = false;
choice = input.nextInt();
}while(notValid);

do{
while(input.nextInt() > diff.length){
System.out.println("Out of bounds");
input.nextLine();
}
choice = input.nextInt();
notInbound = false;
}while(notInbound);

System.out.println(choice);
}

最佳答案

这是因为 while 条件里面的 input.nextInt() 消耗的是整数,所以它后面的一个读取的是下一个。 编辑您还需要像这样组合两个循环:

int choice = 0;
for (;;) {
while(!input.hasNextInt()) {
System.out.println("Numbers Only!");
System.out.print("Try again: ");
input.nextLine();
}
choice = input.nextInt();
if (choice <= diff.length) break;
System.out.println("Out of bounds");
}
System.out.println(choice);

关于java - 使用 Scanner 在 Java 中扫描输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12083159/

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