0
private static void square() {
    System.out.println("Would you like to find Area or Perimeter?");
    String pOrA=sc.next();
    if (pOrA.equals("Perimeter"));
    {
        System.out.println("What is the side length?");
        Double sSide=sc.nextDouble();
        double p = sSide *4;
        System.out.print("The perimeter is " + p);
    }
            //this is where the error is happening
    else if (pOrA.equals("Area"));
    {
        System.out.println("What is the side length?");
        Double sSide2=sc.nextDouble();
        double a = sSide2 * sSide2;
        System.out.print("The Perimeter is " + a);
    }

    }   

Eclipse では、else-if ブロックに「トークン 'else' の構文エラー、このトークンを削除してください」というエラーが表示されます。正直なところ、なぜそれが機能しないのかわかりません。カスタム メソッドでは、else-if ステートメントの動作が異なります。

4

4 に答える 4

5

あなたの問題は、最初の後にセミコロンが追加されていることが原因ifです:

if (pOrA.equals("Perimeter"));
{
    System.out.println("What is the side length?");
    Double sSide=sc.nextDouble();
    double p = sSide *4;
    System.out.print("The perimeter is " + p);
}

これは実際には次と同等です。

if (pOrA.equals("Perimeter"))
{
   // empty block
}

// scope block
{
    System.out.println("What is the side length?");
    Double sSide=sc.nextDouble();
    double p = sSide *4;
    System.out.print("The perimeter is " + p);
}

余分なセミコロンを削除するだけです。

于 2013-05-27T04:59:59.050 に答える
1

とステートメントの;後、特にエラーの原因となるステートメントを削除します。ifelse;if

さらに、;ステートメントの後ろはおそらく望ましくないため、コンパイル エラーの理由はif(..);、if..else を「分割」する の後のブロック ステートメントです。

ブロックのない合法的なコードです:

if (condition);
else; 
{}

しかし、別の「ステートメント」である別のブロックを追加すると、コンパイルエラーが発生するため、 はelseどの とも無関係に表示されますif

if (condition);
{}                 // <- now the compiler exepects that there is no else for that if
else;              // <- and that else here doesn't have a preceeding if anymore
{}
于 2013-05-27T04:59:56.920 に答える
0

コードの最初の行のため:

    if (false);

;次のよう にする必要はありません。

private static void square() {
System.out.println("Would you like to find Area or Perimeter?");
String pOrA=sc.next();
if (pOrA.equals("Perimeter"))
{
    System.out.println("What is the side length?");
    Double sSide=sc.nextDouble();
    double p = sSide *4;
    System.out.print("The perimeter is " + p);
}
        //this is where the error is happening
else if (pOrA.equals("Area"))
{
    System.out.println("What is the side length?");
    Double sSide2=sc.nextDouble();
    double a = sSide2 * sSide2;
    System.out.print("The Perimeter is " + a);
}

} 
于 2013-05-27T05:02:53.920 に答える
0

ifの前後のセミコロンを削除しelseます。

于 2013-05-27T05:00:27.357 に答える