英文:
Unreachable code using switch statements in Java
问题
// 询问部门
private String setDepartment() {
Scanner sc = new Scanner(System.in);
int department;
System.out.println("选择您的部门:\n1. 销售\n2. 会计\n3. 开发\n4. 无");
department = sc.nextInt();
while (true) {
switch (department) {
case 1:
this.department = "销售";
break;
case 2:
this.department = "会计";
break;
case 3:
this.department = "开发";
break;
case 4:
this.department = "";
break;
default:
System.out.println("请选择有效选项 (1-4)");
break;
}
sc.close();
}
return this.department; // 错误:无法访问的代码
}
英文:
So I'm building an email administration app and although it is working with if statements, I am trying to incorporate switch statements. I am prompting the user using a scanner to select which department they are from while building their email associated with it. Although when I am trying to return this.department, it is saying it is unreachable. I feel like I am missing something very obvious.
// Ask for the department
private String setDepartment() {
Scanner sc = new Scanner(System.in);
int department;
System.out.println("Select your department:\n1. Sales\n2.Accounting\n3.Development\n4.N/A");
department = sc.nextInt();
while (true) {
switch (department) {
case 1:
this.department = "Sales";
break;
case 2:
this.department = "Accounting";
break;
case 3:
this.department = "Development";
break;
case 4:
this.department = "";
break;
default:
System.out.println("Please choose a valid option (1-4)");
break;
}
sc.close();
}
return this.department; <-- Error: Unreachable code
}
答案1
得分: 1
问题在于你的while()循环内部的条件。它始终被设置为true。因此,在while循环下面的代码永远不会被执行。尝试在while循环内部使用不同的条件,该条件在达到特定值时终止。否则,你需要将想要返回的任何内容放在while循环内部。
附加:另外,请将sc.close();
放在while循环之外,否则你不能在第一个while循环迭代之后继续使用该资源。因此,关闭资源必须始终在最后进行。
解决方案1:
while(updatedTerminationCondition){//更改终止条件
//在这里放置你要返回的值,但这样循环只会运行一次
}
解决方案2:
while(true){
//在这里放置你要返回的值,但这样循环只会运行一次
}
英文:
problem is your condition inside the while() loop .It set always to true .So code below the while loop never gets executed .Try to have a different condition inside the while loop which terminates in a certain value.Otherwise you need place what ever you want to return inside the while loop.
Extra: Please also place your sc.close();
outside the while loop otherwise you can't use the resource after the first while loop iteration.so closing resource must be done always at the end.
Solution 1:
while(updatedTerminationCondition){//change the termination condition
}
Solution 2:
while(true){
//place your return value inside here but then loop will only run once
}
答案2
得分: 0
问题在于你的switch
语句位于一个永远不会退出的while(true)
循环中。除非你明确地通过使用break
语句退出循环,否则程序将永远不会停止执行该循环,这意味着其下方的任何代码都无法被执行到,这就是编译器报错的原因所在。
英文:
The problem is your switch
-statement is in a while(true)
loop that gets never exited. Unless you explicitly exit the loop e.g. by using break
the program will never stop to execute the loop, meaning any code below it will never get reached, thats what the compiler is complaining about.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论