недостижимая инструкция System.out.println (str);ИЛИ Я ИНОГДА ПОЛУЧИЛ переменную str, возможно, не было инициализировано
С тем, что у вас есть в вашем вопросе, это «недостижимое утверждение», потому что System.out.println(str)
находится в пределах case 7
после break
, поэтомуне может быть достигнуто.
Если переместить его туда, где он должен быть, после закрытия }
switch
, вы получите «переменная str, возможно, не была инициализирована», потому что этоtrue, если day
не является каким-либо из значений в switch
s case
s, что вполне может быть не так, как это пользовательский ввод.
Я бы поставил System.out.println(str);
после switch
и добавьте default
к коммутатору:
default:
throw new IllegalStateException("'day' cannot have the value " + day);
Это предотвратит обе ошибки.(Или в вашем конкретном случае вы можете использовать другое исключение или просто вывести сообщение, а затем return;
для выхода main
, поскольку это ввод пользователя.)
Вот эти изменения на месте, дляясность:
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;
default:
throw new IllegalStateException("'day' cannot be " + day);
}
System.out.println(str);
}