Java 程序在我的Do/While循环中抛出异常

Java 程序在我的Do/While循环中抛出异常,java,switch-statement,do-while,Java,Switch Statement,Do While,我对编程非常陌生,正在练习do/while循环和switch语句。我已经写了一个程序,列出了博物馆的时间,它可以编译,但我似乎无法让它正常运行。它只是抛出: import java.util.Scanner; public class MuseumHours { public static void main (String[] args) { Scanner stdIn = new Scanner(System.in); //variables String

我对编程非常陌生,正在练习do/while循环和switch语句。我已经写了一个程序,列出了博物馆的时间,它可以编译,但我似乎无法让它正常运行。它只是抛出:

import java.util.Scanner;
public class MuseumHours {
    public static void main (String[] args) {

    Scanner stdIn = new Scanner(System.in);
    //variables
    String day;
    boolean holiday = true;
    String userContinue;
    String monday = "Closed";
    //end variables

    //begin program

    do {

    System.out.println("Hello! Thank you for visiting the museum's website. For what day would you like to view our hours of operation?");
    day = stdIn.nextLine();

    System.out.println("Is today a holiday?");
    holiday = stdIn.nextBoolean();

    switch (day) {

        case "Monday":
            System.out.println(monday);
        case "Tuesday":
            if (holiday !=true) {
                System.out.println("The museum is open from 12:00 to 4:00.");
            } else { 
                System.out.println("The museum is open from 1:00 to 3:00.");
                }
            break;
        case "Wednesday":
            if (holiday !=true) {
                System.out.println("The museum is open from 12:00 to 4:00.");
            } else { 
                System.out.println("The museum is open from 1:00 to 3:00.");
                }
            break;
        case "Thursday":
            if (holiday != true) {
                System.out.println("Today the museum opens from 10:00 to 5:00.");
            } else {
                System.out.println("Today the museum opens from 11:00 to 4:00.");
                }
            break;
        case "Friday":
            if (holiday != true) {
                System.out.println("Today the museum opens from 10:00 to 5:00.");
            } else {
                System.out.println("Today the museum opens from 11:00 to 4:00.");
                }
            break;

        case "Saturday":   
            if (holiday != true) {
                System.out.println("Today the museum is open from 9:00 to 6:00.");
            } else {
                System.out.println("Today the museum is open from 10:00 to 5:00.");
                }
            break;
        case "Sunday":
            if (holiday != true) {
                System.out.println("Today the museum is open from 9:00 to 6:00.");
            } else {
                System.out.println("Today the museum is open from 10:00 to 5:00.");
                }
            break;

        default:
            System.out.println("Invalid day.");

            }

            System.out.println("Would you like to run the program again? Enter Y for yes, or N for no.");
            userContinue = stdIn.nextLine();
        } while (userContinue.equals("Y"));
    }
}

当您在执行时没有从命令行传递正确类型的参数时,可能会出现异常

例如,如果为“今天是假日吗?”传递的任何值与这些问题中的任何一个(true、false)不同(不区分大小写),则下一行将给出错误

holiday=stdIn.nextBoolean()

希望有帮助

在JavaSE7和更高版本中,可以在交换机中使用String对象 语句表达式

如果您没有使用JavaSE7及更高版本,则无法运行此程序

此外,您还可以通过替换

if(holiday != true){...}


它只是抛出:。。你们得到了什么异常?抛出了什么异常,针对哪个输入?你们错过了周一之后的break语句,对我来说毫无异常。在某些情况下,您缺少一些
break
语句,但它可以运行请提供例外情况。如果假日是布尔值,请不要使用(holyday!=true),只需使用(!holiday)
if(!holiday){...}