我目前正在创建第一个在控制台中执行的游戏。
我被要求验证可以用简单代码完成的输入。目标是输入,然后验证该数字是否为整数并且在1-4的范围内。如果可能,应使用基本算法解决该问题。
问题是它不会给我我想要的结果。当我输入字符串时,它可以工作,但是会在我输入的每个数字(包括范围内的数字)上循环播放。有人知道为什么吗?
public class Menu {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
int input = 0;
int min = 1;
int max = 4;
boolean inputValidate;
System.out.println("Main Menu");
System.out.println("=========");
System.out.println("1. Play Game");
System.out.println("2. About");
System.out.println("3. View Saved Games");
System.out.println("4. Exit");
System.out.println("");
do {
System.out.print(">> ");
if (!scanner.hasNextInt()) {
inputValidate = false;
System.out.println("Not a number. Please input number 1-4.");
scanner.nextLine();
} else if (input <= max && !(input < min)) // if input <= 4 and input is not less than 1
{
input = scanner.nextInt();
inputValidate = true;
} else {
inputValidate = false;
System.out.println("Not in range. Please input number 1-4.");
scanner.nextLine();
}
} while (!(inputValidate));
switch (input) {
case 1:
break;
case 2:
System.out.println("Good work!");
break;
case 3:
break;
case 4:
break;
}
}
}
}
因为你实例input
是0
,但从来没有给用户一个机会来改变这种情况,前两个条件语句的条件总是假的(没有从扫描仪读取和0之间没有min
和max
)。因此,该程序会一直执行到else
每次。只需在之前添加一条语句,该语句将从用户do- while
那里获取值input
。
input = scanner.nextInt();
// your do-while loop
(您可能还必须稍微调整代码以获得所需的交互类型。提示-您正在从用户读取两个值。)
我很难想出如何正确使用扫描仪来验证用户输入。例如,程序需要用户输入int,用户只能输入正数,如果用户输入“apple”、“delicious apple”或负数,问题将显示错误消息。我尝试了下面的代码,然后我发现了一个令人不安的问题,“那不是一个数字!”我不知道是什么引起了这些问题。。。。 我在“number=sc.nextInt()”下面加了一行代码,意外地解决了这个问题,现在我的代码变成: 这
问题内容: 我必须在 while 循环中显示Scanner输入:用户必须插入输入,直到他写下“ quit”为止。因此,我必须验证每个输入以检查他是否写出“ quit”。我怎样才能做到这一点? 这行不通。如何验证每个用户的输入? 问题答案: 问题是nextLine() “使该扫描程序前进到当前行之外”。因此,当您调用该条件并且不保存返回值时,您将丢失用户输入的那一行。对第3行的调用返回另一行。 您可
从指定范围(0,20)内且为int的用户处获取有效整数的最佳方法是什么。如果他们输入了无效的整数打印输出错误。 我在想这样的事情: 这是正确的还是有更好的方法?
我试图验证一个逗号分隔的数字列表1-384唯一(不重复)。 即。 1, 2, 3, 5, 6, 7, 9有效 1-3, 5-7, 9有效 2,2,6无效 2,无效 1, 2, 3, 4, 15, 6, 7, 385无效,因为最后一个数字大于384 我尝试了以下RegEx模式,但还不够:
对于作业,我必须编写以下代码: 当我尝试编译它时,它在命令提示符下给了我3个错误,说“无法解析符号,符号:类扫描仪,位置:类单词,扫描仪用户输入=新扫描仪(System.in)”。我不确定错误在哪里。我应该使用BufferedReader作为输入吗?
我需要让用户从控制台输入一个非零的正整数,我将在程序中用它作为产品编号。 如果我输入任何非整数值,程序会正确地进入while循环。 如果我输入0或负整数,程序会正确抛出异常(我在其他地方捕获和处理)。 当我只是按回车键(或行尾字符)时,程序似乎只是将控制台放在另一行。我希望它进入 while 循环以显示错误消息。我认为原因是将等到令牌是非行尾字符输入。 是否有另一种方法可以使用 Scanner 类