java 8 不可达语句 switch case 语句

Posted

技术标签:

【中文标题】java 8 不可达语句 switch case 语句【英文标题】:java 8 unreachable statement switch case statement 【发布时间】: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: 并没有按照你的想法去做。 该错误是由breakdefault: 子句中的switch(yourGrade) 引起的。请注意,switch(yourGrade) 可能是其他任何 Java 语句,并且仍然会发生错误。原因是代码永远无法访问,因为您刚刚通过break“跳出”default: 子句。 if (yourGrade >=90 && yourGrade 另请注意,该问题不是 Java8特有的;我看到的唯一 Java8 功能是 String 上的开关(准确地说是 Java7 功能)。 现在我已经修复了你的错误缩进,更明显的是你的switch(yourGrade) 语句在错误的位置,你不觉得吗? 【参考方案1】:

这是正确的代码,您的内部开关确实无法访问,因为它不包含在 case 中。

在这里,我把它放入你的“是”case,这是最合乎逻辑的。

注意:您的主开关只有两个选项:“是”或“默认”。在这种情况下,我更喜欢使用简单的 if...else

  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;

        if(yourGrade >= 90 && yourGrade <= 99)
        
            System.out.println("testing");
        
        break;


        default:
        System.out.println("Thank you "+name);
        break;
    

【讨论】:

默认后不要使用“break”。 看起来我需要学习更多,虽然我真的只是要学习这些东西,我的老师只是让我们不知从哪里做一个练习然后把它作为我们的作业,因为我们没有足够的时间(没有意识到程序与java6不兼容) 无论如何,谢谢大家,我是新来的,所以我不知道如何回复,我也有点忙,呵呵,也许我可以称之为提前学习 还有一件事是甚至可以使用 switch 语句而不是 if else 语句当我的意思是我要使用 if else 因为我需要使用比较例如 if(yourGrade > 100) //代码然后在 switch 中执行? 这不是一般规则,但在上面的代码中,break 禁止执行以下开关。

以上是关于java 8 不可达语句 switch case 语句的主要内容,如果未能解决你的问题,请参考以下文章

写switch case语句不加break会怎样

Java中为啥我写switch语句,在case后加break就错误,不加就正确,很困惑,

Java switch case语句

switch case语句和if的区别

关于switch case语句的问题

Java switch case和数组