1

我正在以经典的方式学习 Java——与 Karel 一起玩。

但我似乎遇到了一个即使在谷歌的帮助下也无法解决的简单问题。

我在 Eclipse 中收到一个错误,说令牌“else”上有语法错误,我应该删除它。

怎么来的?else 语句上方的代码块中的语法是相同的。

这是我的代码:

public void run() {

    putBeeper();
    if(beepersPresent()){

        move();

    } while(frontIsClear()){
        move();
        putBeeper();
    } else if(facingEast()){

        turnLeft();
        move();

    }
        }
4

7 回答 7

4

else语句必须紧跟在 之后if,它们之间有一个while循环。

由于这被否决了, Java语言规范的相关部分更正式

14.9 if 语句 if 语句允许有条件地执行一个语句或有条件地选择两个语句,执行一个或另一个但不能同时执行。

IfThenStatement:
        if ( Expression ) Statement

IfThenElseStatement:
        if ( Expression ) StatementNoShortIf else Statement

IfThenElseStatementNoShortIf:
        if ( Expression ) StatementNoShortIf else StatementNoShortIf

Expression 必须具有 boolean 或 Boolean 类型,否则会发生编译时错误。

于 2011-11-18T18:45:12.660 回答
3

因为你想说while() { } else {

为什么还要?

(是的,我就是这么做的。)

于 2011-11-18T18:45:03.987 回答
0

你的else火柴while,不是if。不完全清楚你想在那里做什么。

于 2011-11-18T18:44:41.220 回答
0

大概:

while(frontIsClear())

应该

else if(frontIsClear())
于 2011-11-18T18:44:54.533 回答
0

你到底想在这里做什么?

while(frontIsClear()){
        move();
        putBeeper();
    } else if(facingEast()){

        turnLeft();
        move();

虽然这个..如果那样的话?不可能。

于 2011-11-18T18:45:03.640 回答
0

你把你放在elsea 之后while,这确实是一个语法错误

试试看:

public void run() {
    putBeeper();
    if(beepersPresent()){
        move();
    } 
    while(frontIsClear()){
        if (facingEast()) {
            turnLeft();
        }
        move();
        putBeeper();
    }
}
于 2011-11-18T18:45:13.243 回答
0

真的很简单。

你的 if 持续在 { 和 } 之间。else 必须在之后。

删除 while 附近的 } 并将其放在其他地方,你应该没问题。

于 2011-11-18T18:45:36.413 回答