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); 感谢帮助
无法访问的语句System.out.println(str); 或者我有时GET变量str可能尚未初始化
根据你在问题中所拥有的内容,它是"无法访问的声明",因为System.out.println(str)它在case 7之后break,所以无法达到.
如果你将它移动到它应该是,收盘后}的switch,你会得到"变量str可能尚未初始化",因为这是真的,如果day不是任何一个值,在switch的caseS,它很好吧可能不是因为这是用户输入.
我把它放在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)
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |