gpt4 book ai didi

java - 在 switch 语句中得到一个无法访问的语句

转载 作者:行者123 更新时间:2023-11-29 07:26:56 24 4
gpt4 key购买 nike

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);感谢帮助

最佳答案

unreachable statement System.out.println(str); OR I SOMETIMES GET variable str might not have been initialized

根据您的问题,这是“无法访问的语句”,因为 System.out.println(str)break< 之后的 case 7,所以无法到达。

如果你把它移动到它应该在的地方,在 switch 关闭 之后,你会得到“变量 str 可能没有被初始化”,因为如果 day 不是 switchcase 中的任何值,则为真,但很可能不是这样用户输入。

我将 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);
}

关于java - 在 switch 语句中得到一个无法访问的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50491501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com