如果声明是终止程序或不工作

时间:2016-03-10 23:16:17

标签: java if-statement

我正在尝试编写一个代码,为用户设置巡视和预订。可用时间为1013。如果用户输入的时间不是给予他们另一个机会,我认为他们将输入正确的时间。但是,在运行我的代码时,如果我在第一次或第二次输入正确的时间,它将结束。我不确定我做错了什么。这是我的代码。

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");

永远不会显示带有旅游信息的行。

3 个答案:

答案 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");