1

私は従来の方法で Java を学んでいます — Karel と遊んでいます。

しかし、Google の助けを借りても解決できない単純な問題に遭遇したようです。

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ステートメントでは、ステートメントの条件付き実行または2つのステートメントの条件付き選択が可能で、どちらか一方を実行しますが、両方を実行することはできません。

IfThenStatement:
        if ( Expression ) Statement

IfThenElseStatement:
        if ( Expression ) StatementNoShortIf else Statement

IfThenElseStatementNoShortIf:
        if ( Expression ) StatementNoShortIf else StatementNoShortIf

式の型はブール型またはブール型である必要があります。そうでない場合、コンパイル時エラーが発生します。

于 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

elseの後に入れます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 に答える