在交换机声明上得到了一个无法访问的声明

Niv*_*Niv 1 java switch-statement

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);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

您好我为什么一直收到错误:

无法访问的语句System.out.println(str); 或者我有时GET变量str可能尚未初始化System.out.println(str); 感谢帮助

T.J*_*der 6

无法访问的语句System.out.println(str); 或者我有时GET变量str可能尚未初始化

根据你在问题中所拥有的内容,它是"无法访问的声明",因为System.out.println(str)它在case 7之后break,所以无法达到.

如果你将它移动到它应该是,收盘后}switch,你会得到"变量str可能尚未初始化",因为这是真的,如果day不是任何一个值,在switchcaseS,它很好吧可能不是因为这是用户输入.

我把它放在System.out.println(str);后面switch并添加一个default到开关:

default:
    throw new IllegalStateException("'day' cannot have the value " + day);
Run Code Online (Sandbox Code Playgroud)

这将防止这两个错误.(或者在您的特定情况下,您可以使用不同的异常,或者只输出一条消息然后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);
}
Run Code Online (Sandbox Code Playgroud)