在交换机声明

时间:2018-05-23 14:53:15

标签: 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);
    }
  }
}

您好 为什么我继续收到错误:

无法达成的声明          的System.out.println(STR); 或者我有时GET变量str可能尚未初始化         的System.out.println(STR); 谢谢你的帮助

2 个答案:

答案 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。