Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java 8不可访问语句switch case语句_Java_Switch Statement_Unreachable Statement - Fatal编程技术网

java 8不可访问语句switch case语句

java 8不可访问语句switch case语句,java,switch-statement,unreachable-statement,Java,Switch Statement,Unreachable Statement,我们的老师教我们关于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 Sca

我们的老师教我们关于
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;
                }

        }

    }
}

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

在这里,我把它放在你最合乎逻辑的“是”
案例中

注意:您的主开关只有两个选项:“是”或“默认”。在这种情况下,我更喜欢使用简单的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;
    }
开关(yesNo)
{
案例“是”:
System.out.println(“输入您的出勤分数(10%)\n”);
出席人数=k.nextInt();
System.out.println(“输入您的参与分数(10%)\n”);
int participation=k.nextInt();
System.out.println(“输入您的测验分数(10%)\n”);
智力测验=k.nextInt();
System.out.println(“输入您的考试分数(40%)\n”);
int-exam=k.nextInt();
System.out.println(“输入您的实验室成绩(20%)\n”);
int lab=k.nextInt();
两点10=0.10;
两点20=0.20;
双点40=0.40;
双出勤人数=出勤人数*第10点;
双重参与C=参与*第10点;
双重测验=测验*第20点;
双examC=检查*第40点;
双labC=lab*点20;
双倍评分=参加人数+参与人数+测验+考试+实验室;
int yourGrade=(int)yourGrade;

如果(yourGrade>=90&&yourGrade
案例99 | 98 | 97 | 96 | 95 | 94 | 93 | 92 | 91 | 90:
没有按您的想法执行。错误是由
开关(yourGrade)
默认值:
子句中的
中断后的
引起的。请注意
开关(yourGrade)
可能是其他任何Java语句,错误仍然会发生。原因是无法访问代码,因为您刚刚通过
break
“跳出”了
default:
子句(yourGrade>=90&&yourGrade还注意到问题不是Java8特有的;我看到的唯一Java8特性是字符串上的开关(确切地说是Java7特性)。现在我已经修复了您的错误缩进,更明显的是您的
开关(yourGrade)
语句位于错误的位置,您不认为吗?不要使用“break”在默认情况下。看起来我需要学习更多,虽然我们真的正要学习这些东西我的老师让我们做了一个不知从何而来的练习,然后把它作为我们的作业,因为我们没有足够的时间(没有意识到该程序与java6不兼容)不管怎样,谢谢大家,我是新来的,所以我不知道怎么回答,我也有点忙呵呵,也许我可以称之为提前学习。还有一件事,甚至可以用switch语句而不是if-else语句,当我的意思是我要用if-else,因为我需要使用比较,例如if(yourGrade>100)//代码然后在开关中执行?这不是一般规则,但在上面的代码中,中断禁止执行以下开关。