“其他”的语法错误

时间:2018-06-26 20:27:12

标签: java if-statement syntax syntax-error token

我一直收到此错误:“令牌“ 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?");
        }

1 个答案:

答案 0 :(得分:3)

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

  1. Java不使用缩进来表示作用域-条件块的开始和结束位置。默认情况下,条件只是一行。使用{}来分隔条件块通常被认为是一种好习惯。换句话说,不要写这个

    if (something)
         one;
         two;
         three;
    

    因为这里仅one;取决于条件。将整个批次放在{}之间,例如

    if (something) {
        one;
        two;
        three;
    }
    
  2. 下一个问题是,字符串值需要与equals方法进行比较,而不是与==进行比较。原因是==检查两个表达式是否引用了完全相同的对象。它不会检查两个对象是否具有相同的内容。在这种情况下,您从输入中读取的对象将永远与String文字相同,因此,if (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紧跟在条件块之后,因此编译器可以理解它,并且不会出现编译错误。