我正在尝试编写一个代码,为用户设置巡视和预订。可用时间为10
,1
和3
。如果用户输入的时间不是给予他们另一个机会,我认为他们将输入正确的时间。但是,在运行我的代码时,如果我在第一次或第二次输入正确的时间,它将结束。我不确定我做错了什么。这是我的代码。
System.out.print("Enter the time (10, 1 or 3): ");
newTime = keyboard.nextInt();
if(newTime != 10 && newTime != 1 && newTime != 3)
{
System.out.print("\nTime entered is invalid\nEnter the time (10, 1 or 3): ");
}
else if (newTime == 10 || newTime == 1 || newTime == 3)
{
newTime = keyboard.nextInt();
}
System.out.print("\n\nTour information");
永远不会显示带有旅游信息的行。
答案 0 :(得分:0)
代码中的一些问题:
- 在第二个if语句中,不更新newTime的值。您要求提示重新输入值,但您没有捕获它,并且条件将使用先前输入的值进行评估。你应该做的是在提示符之后的第一个if块中调用nextInt()。
- 其次,您可能希望使用带有布尔标志的while循环来控制流并实现预期目标。像这样:
boolean rightTime = false;
System.out.print("Enter the time (10, 1 or 3): ");
while(!rightTime) {
System.out.print("\nTime entered is invalid\nEnter the time (10, 1 or 3): ")
newTime = keyboard.nextInt();
rightTime = (newTime == 10 || newTime == 3 || newTime == 1);
}
答案 1 :(得分:0)
以下是您的代码的略微修改版本
System.out.print("Enter the time (10, 1 or 3): ");
Scanner scanner = new Scanner(System.in);
int newTime = scanner.nextInt();
if(newTime != 10 && newTime != 1 && newTime != 3)
{
System.out.println("\nTime entered is invalid\nEnter the time (10, 1 or 3): ");
}
else
{
newTime = scanner.nextInt();
System.out.println("\n\nTour information");
}
}
这适用于您在问题中指定的内容
答案 2 :(得分:0)
您想要多少次正确的时间?我将在这里猜测并假设您要继续询问,直到用户输入正确的时间。在这种情况下,您想要使用循环。
System.out.print("Enter the time (10, 1 or 3): ");
newTime = keyboard.nextInt();
//If the user inputs an in incorrect hour, then loop until the user inputs a correct time:
while (newTime != 10 && newTime != 1 && newTime != 3) {
System.out.print("\nTime entered is invalid\nEnter the time (10, 1 or 3): ");
newTime = keyboard.nextInt();
}
System.out.print("\n\nTour information");