Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么在下面的代码中注释抛出新的IllegalArgumentException会将行“return typeofDay”错误为“variable not initialized”_Java - Fatal编程技术网

Java 为什么在下面的代码中注释抛出新的IllegalArgumentException会将行“return typeofDay”错误为“variable not initialized”

Java 为什么在下面的代码中注释抛出新的IllegalArgumentException会将行“return typeofDay”错误为“variable not initialized”,java,Java,注释以下行时,抛出编译错误: public String getTypeOfDayWithSwitchStatement(int dayOfWeekArg) { String typeOfDay; switch (dayOfWeekArg) { case "Monday": typeOfDay = "Start of work week"; break; case "Tuesday":

注释以下行时,抛出编译错误:

public String getTypeOfDayWithSwitchStatement(int dayOfWeekArg) {
     String typeOfDay;
     switch (dayOfWeekArg) {
         case "Monday":
             typeOfDay = "Start of work week";
             break;
         case "Tuesday":
         case "Wednesday":
         case "Thursday":
             typeOfDay = "Midweek";
             break;
         case "Friday":
             typeOfDay = "End of work week";
             break;
         case "Saturday":
         case "Sunday":
             typeOfDay = "Weekend";
             break;
         default:
             throw new IllegalArgumentException("Invalid day of the week: " + dayOfWeekArg);
     }
     return typeOfDay;
}
typeOfDay也被视为未初始化变量


但是为什么以前不将其视为未初始化变量。

因为如果您的代码流通过默认部分 这里没有抛出异常,您的变量typeOfDay将 事实上,它是未初始化的。当抛出异常时, 编译器知道您不能通过默认值
节,并在它之后继续向下,因为将抛出异常。

因为如果您的代码流通过默认节 这里没有抛出异常,您的变量typeOfDay将 事实上,它是未初始化的。当抛出异常时, 编译器知道您不能通过默认值 节,并在它之后继续向下,因为将引发异常。

假设dayOfWeekArg包含的不是日期名称,因此在switch语句中达到默认情况

如果您没有在那里抛出异常,执行将继续到方法底部的return语句,但是typeOfDay将不会被设置为任何值。那是个错误

如果抛出异常,则当dayOfWeekArg包含除日期名称以外的任何内容时,将永远无法到达return语句,因此没有问题。

假设dayOfWeekArg包含除日期名称以外的其他内容,因此在switch语句中,将到达默认情况

如果您没有在那里抛出异常,执行将继续到方法底部的return语句,但是typeOfDay将不会被设置为任何值。那是个错误


如果抛出异常,当dayOfWeekArg包含除日期名称以外的任何内容时,将永远无法到达return语句,因此没有问题。

通读switch语句:

如果变量等于其中一种情况,它将被指定一个值,对吗?但是如果它不等于其中一个语句,会发生什么呢?然后它应该通过默认情况

如果你有一个新的抛出默认情况。。。然后,不会向用户返回任何内容,变量是否初始化也无关紧要。现在,当你评论扔新的。。。编译器意识到有可能返回没有值的变量typeOfDay,因为它没有经过任何case语句,默认语句也没有对它做任何处理


它试图通过警告您可能返回没有值的变量来避免您的头痛。这可以通过初始化变量来解决

通读您的switch语句:

如果变量等于其中一种情况,它将被指定一个值,对吗?但是如果它不等于其中一个语句,会发生什么呢?然后它应该通过默认情况

如果你有一个新的抛出默认情况。。。然后,不会向用户返回任何内容,变量是否初始化也无关紧要。现在,当你评论扔新的。。。编译器意识到有可能返回没有值的变量typeOfDay,因为它没有经过任何case语句,默认语句也没有对它做任何处理

它试图通过警告您可能返回没有值的变量来避免您的头痛。这可以通过初始化变量来解决

throw new IllegalArgumentException("Invalid day of the week: " + dayOfWeekArg);