import java.util.Scanner;
public class Program{
public static void main(String[] args){
int day;
int month = 5;
int year = 2018;
String str;
Scanner s = new Scanner(System.in);
day = s.nextInt();
switch(day) {
case 1:
str = "Sunday";
break;
case 2:
str = "Monday";
break;
case 3:
str = "Tuesday";
break;
case 4:
str = "Wednesday";
break;
case 5:
str = "Thursday";
break;
case 6:
str = "Friday";
break;
case 7:
str = "Saturday";
break;
System.out.println(str);
}
}
}
您好 为什么我继续收到错误:
无法达成的声明 的System.out.println(STR); 或者我有时GET变量str可能尚未初始化 的System.out.println(STR); 谢谢你的帮助
答案 0 :(得分:6)
无法访问的语句System.out.println(str);或者我有时GET变量str可能尚未初始化
根据您的问题,它是“无法访问的声明”,因为System.out.println(str)
在case 7
之后break
内,因此无法达到。
如果你把它移动到它应该的位置,在}
的结束switch
之后,你会得到“变量str可能没有被初始化”,因为如果{{1 }}不是day
的{{1}}中的任何值,这很可能不是因为这是用户输入。
我将switch
放在case
之后,并在交换机上添加System.out.println(str);
:
switch
这将防止这两个错误。 (或者在您的特定情况下,您可以使用其他异常,或只输出消息,然后default
退出default:
throw new IllegalStateException("'day' cannot have the value " + day);
,因为这是用户输入。)
为清晰起见,这是原位的变化:
return;
答案 1 :(得分:-1)
您收到错误,因为您的break语句在到达sysout语句之前退出switch语句。
在switch语句之外使用sysout。