【问题标题】:Syntax error on "else" [closed]“else”的语法错误[关闭]
【发布时间】:2018-12-05 15:34:09
【问题描述】:

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

【问题讨论】:

  • 这就是为什么您应该始终使用大括号 {}if 语句。
  • 另外你应该使用equals来比较Java中的字符串而不是=
  • 奇怪的是你使用了{ } 可以跳过它们,但同时你没有在需要的地方使用它们。您可能需要阅读有关 Java 中“范围”的更多信息。

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


【解决方案1】:

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

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

    if (something)
         one;
         two;
         three;
    

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

    if (something) {
        one;
        two;
        three;
    }
    
  2. 下一个问题是String值需要与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 紧跟在一个条件块之后,编译器可以理解它,你不会得到编译错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多