-5

我不断收到此错误:“令牌“else”上的语法错误,删除此令牌。” 我试图移动东西,但没有任何效果。我不知道如何解决这个问题。

     if (input == "yes")
        System.out.println("Enter exam 1 score:");
        examScore1 = keyboard.nextInt();

     if (input == "y" )  
        System.out.println("Enter exam 1 score:");
        examScore1 = keyboard.nextInt();

    else {
            System.out.println("Do you know your lab average?");
        }
4

1 回答 1

3

您的代码有两个明显的问题,还有一个小风格点。

  1. Java 不使用缩进来指示范围——条件块的开始和结束位置。默认情况下,一个条件只有一行。{使用和}分隔条件块通常被认为是一种很好的做法。换句话说,不要写这个

    if (something)
         one;
         two;
         three;
    

    因为只有one;这里取决于条件。把全部放在{and之间},比如

    if (something) {
        one;
        two;
        three;
    }
    
  2. 下一个问题是 String 值需要与equals方法进行比较,而不是与==. 原因是==检查两个表达式是否引用完全相同的对象。它不检查两个对象是否具有相同的内容。在这种特殊情况下,您从输入中读取的对象永远不会与您的String文字相同,因此条件 likeif (input == "yes")将始终为 false。

  3. 由于您在两个条件块中重复了相同的逻辑,因此最好只编写一次该逻辑。在这种情况下,您可以使用|| 运算符(意​​思是“或”)来组合这两个条件。

一次解决这三个问题会将您的代码变成这样。

if (input.equals("yes") || input.equals("y")) {
    System.out.println("Enter exam 1 score:");
    examScore1 = keyboard.nextInt();
} else {
    System.out.println("Do you know your lab average?");
}

在这里,因为else紧跟在一个条件块之后,编译器可以理解它,你不会得到编译错误。

于 2018-06-26T20:41:06.037 回答