-5
import java.util.Random;

public class knife {

    static Random randGen = new Random();
    public static void main(String[] args) {

            int kniferpd = 1;
            int knifebullet = 0;

            int charstrength = 10;
            int charlightcc = 10;

            int hit = randGen.nextInt(10) + 1 + charlightcc;
            int crit = randGen.nextInt(100) + 1 + charlightcc;
            int knifedmg = randGen.nextInt(5) + 6;

            if (hit < 10) 
            System.out.println("You missed!");
            else if (hit > 10 && crit > 98);
            System.out.println("Critical strike of " + knifedmg * 2 + "dmg.");
            else if (hit > 10 && crit < 98);
            System.out.println("Strike of " + knifedmg + "dmg.");

            {

    }
}
}

このコードを書いたときに、以下に示すエラーが表示されました。何が悪いのかわかりません! これは私のエラーです。下部の「else if」に表示されます。

予想どおり、トークン「else」の構文エラー

4

4 に答える 4

2

;if ステートメントの後を削除します

これを行う

if (hit < 10) 
     System.out.println("You missed!");
else if (hit > 10 && crit > 98)
    System.out.println("Critical strike of " + knifedmg * 2 + "dmg.");
else if (hit > 10 && crit < 98)
    System.out.println("Strike of " + knifedmg + "dmg.");

またはその

if (hit < 10) {
     System.out.println("You missed!");
}
else if (hit > 10 && crit > 98) {
    System.out.println("Critical strike of " + knifedmg * 2 + "dmg.");
}
else if (hit > 10 && crit < 98) {
    System.out.println("Strike of " + knifedmg + "dmg.");
}
于 2012-04-05T06:59:48.413 に答える
2

;で行末から削除if

于 2012-04-05T06:59:57.090 に答える
1

ほんの少しのミス...

        if (hit < 10) 
             System.out.println("You missed!");
        else if (hit > 10 && crit > 98);  // <-- No ; here
             System.out.println("Critical strike of " + knifedmg * 2 + "dmg.");
        else if (hit > 10 && crit < 98); // <-- No ; here
             System.out.println("Strike of " + knifedmg + "dmg.");

あなたの理解のために、あなたが書いたことは次のように解釈されます:

if (hit < 10) {
     System.out.println("You missed!");
} else if (hit > 10 && crit > 98) {
     ; // same as do nothing
}

System.out.println("Critical strike of " + knifedmg * 2 + "dmg.");

else if (hit > 10 && crit < 98){ // compiler error
     ; // same as do nothing
}

System.out.println("Strike of " + knifedmg + "dmg.");
于 2012-04-05T07:00:54.793 に答える
0

これが、{} を厳密に必要としない場合でも、if ステートメントに {} を使用する方がほとんどの場合に適している理由です。{} を追加すると、何が起こっているかは明らかです。

コードを少し再フォーマットすると、次のようになります。

import java.util.Random;

public class knife {

    static Random randGen = new Random();
    public static void main(String[] args) {

            int kniferpd = 1;
            int knifebullet = 0;

            int charstrength = 10;
            int charlightcc = 10;

            int hit = randGen.nextInt(10) + 1 + charlightcc;
            int crit = randGen.nextInt(100) + 1 + charlightcc;
            int knifedmg = randGen.nextInt(5) + 6;

            if (hit < 10) {
                System.out.println("You missed!");
            } else if (hit > 10 && crit > 98);

            System.out.println("Critical strike of " + knifedmg * 2 + "dmg.");

            else if (hit > 10 && crit < 98); // this doesn't make sense

            System.out.println("Strike of " + knifedmg + "dmg.");

            {

    }
}
}

修正を加えて正しくフォーマット

import java.util.Random;

public class knife {

    static Random randGen = new Random();
    public static void main(String[] args) {

            int kniferpd = 1;
            int knifebullet = 0;

            int charstrength = 10;
            int charlightcc = 10;

            int hit = randGen.nextInt(10) + 1 + charlightcc;
            int crit = randGen.nextInt(100) + 1 + charlightcc;
            int knifedmg = randGen.nextInt(5) + 6;

            if (hit < 10) {
                System.out.println("You missed!");
            } else if (hit > 10 && crit > 98) {            
                System.out.println("Critical strike of " + knifedmg * 2 + "dmg.");
            } else if (hit > 10 && crit < 98) {                
                System.out.println("Strike of " + knifedmg + "dmg.");
            }

    }
}
于 2012-04-05T07:05:42.890 に答える