【发布时间】:2016-01-01 04:57:48
【问题描述】:
我们的老师教我们if-else 语句,他教我们switch 语句如何替代if-else,所以我在编码时遇到了这个无法访问的语句错误。我不知道我应该如何调试,因为我刚刚将我的 Java 从 6 更新到 8,我真的不知道我的代码有什么问题。
import java.io.*;
import java.util.Scanner;
class Switch
{
public static void main(String[] args)
{
Scanner k = new Scanner(System.in);
System.out.println("Whats your name?");
String name = k.nextLine();
System.out.println("Do you want to compute your grades?");
String yesNo = k.nextLine();
switch(yesNo)
{
case "yes":
System.out.println("Input your attendance grade(10%)\n");
int attendance = k.nextInt();
System.out.println("Input your participation grade (10%)\n");
int participation = k.nextInt();
System.out.println("Input your quiz grade (10%)\n");
int quiz = k.nextInt();
System.out.println("Input your exam grade(40%)\n");
int exam = k.nextInt();
System.out.println("Input your lab grade (20%)\n");
int lab = k.nextInt();
double point10 = 0.10;
double point20 = 0.20;
double point40 = 0.40;
double attendanceC = attendance*point10;
double participationC = participation*point10;
double quizC = quiz*point20;
double examC = exam*point40;
double labC = lab*point20;
double yourGradeD = attendanceC+participationC+quizC+examC+labC;
int yourGrade = (int)yourGradeD;
break;
default:
System.out.println("Thank you "+name);
break;
switch(yourGrade)
{
case 99|98|97|96|95|94|93|92|91|90:
System.out.println("testing");
break;
}
}
}
}
【问题讨论】:
-
case 99|98|97|96|95|94|93|92|91|90:并没有按照你的想法去做。 -
该错误是由
break后default:子句中的switch(yourGrade)引起的。请注意,switch(yourGrade)可能是其他任何 Java 语句,并且仍然会发生错误。原因是代码永远无法访问,因为您刚刚通过break“跳出”default:子句。 -
if (yourGrade >=90 && yourGrade
-
另请注意,该问题不是 Java8特有的;我看到的唯一 Java8 功能是 String 上的开关(准确地说是 Java7 功能)。
-
现在我已经修复了你的错误缩进,更明显的是你的
switch(yourGrade)语句在错误的位置,你不觉得吗?
标签: java switch-statement unreachable-statement