我一直收到此错误:“令牌“ 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?");
}
答案 0 :(得分:3)
您的代码有两个明显的问题,还有一个小的样式点。
Java不使用缩进来表示作用域-条件块的开始和结束位置。默认情况下,条件只是一行。使用{
和}
来分隔条件块通常被认为是一种好习惯。换句话说,不要写这个
if (something)
one;
two;
three;
因为这里仅one;
取决于条件。将整个批次放在{
和}
之间,例如
if (something) {
one;
two;
three;
}
下一个问题是,字符串值需要与equals
方法进行比较,而不是与==
进行比较。原因是==
检查两个表达式是否引用了完全相同的对象。它不会检查两个对象是否具有相同的内容。在这种情况下,您从输入中读取的对象将永远与String
文字相同,因此,if (input == "yes")
之类的条件将始终为false。
由于在两个条件块中重复了相同的逻辑,因此最好只编写一次该逻辑。在这种情况下,您可以使用||
运算符(表示“或”)来组合这两个条件。
一次性解决这三个问题,您的代码就会变成这样。
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
紧跟在条件块之后,因此编译器可以理解它,并且不会出现编译错误。