gpt4 book ai didi

java - 如何确保 Scanner hasNextInt() 请求新输入?

转载 作者:行者123 更新时间:2023-12-02 05:52:25 26 4
gpt4 key购买 nike

这里是新程序员。这可能是一个非常基本的问题,但它仍然困扰着我。

我想做的是编写一种仅提供一个整数输入的方法,这样我就可以在主程序中使用该输入,而不必处理非整数输入。然而,即使在自己的方法中编写方法来执行此操作似乎也是有问题的。

public static int goodInput () {
Scanner input = new Scanner (System.in); //construct scanner
boolean test = input.hasNextInt(); //set a sentinel value
while (test == false) { //enter a loop until I actually get an integer
System.out.println("Integers only please"); //tell user to give me an integer
test = input.hasNextInt(); //get new input, see if it's an integer
}
int finalInput = input.nextInt(); //once i have an integer, set it to a variable
input.close(); //closing scanner
return finalInput; //return my integer so I don't have to mess around with hasNextInt over there
}

这似乎在多个层面上都被破坏了,但我不太确定为什么。

如果我在第一次被要求输入时输入像 0 或 1 这样的整数值,它应该完全跳过循环。但是,它进入循环,并打印“请只输入整数”。更糟糕的是,当我在那里时,它实际上并不要求输入,而只是重复打印该行。

我知道后一个问题可能是由于 token 问题造成的,但我不一定确定如何解决它们;关闭然后重新打开扫描仪会让 Eclipse 因“重复对象”而给我带来麻烦,只需将旧输入分配给从未使用过的垃圾字符串变量,就会告诉我在运行时“未找到行”,而且我的经验还不够考虑其他方式来获取新的输入。

即使这个问题解决了,我也需要找到一些方法来避免在有整数的情况下进入循环。我真的不明白为什么整数输入首先要插入循环,所以我不确定这是如何可能的。

请帮忙?抱歉,如果这是一个老问题;尝试查看过去的问题,但似乎没有一个与我有相同的问题。

最佳答案

你很接近:这对我来说效果很好:

Scanner input = new Scanner(System.in); //construct scanner
while(!input.hasNextInt()) {
input.next(); // next input is not an int, so consume it and move on
}
int finalInput = input.nextInt();
input.close(); //closing scanner
System.out.println("finalInput: " + finalInput);

通过在 while 循环中调用 input.next(),您可以消耗非整数内容并重试,直到下一个输入是 int。

关于java - 如何确保 Scanner hasNextInt() 请求新输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25962939/

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