2012-04-05 8 views
-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"コマンドが機能しません。私はエラーが下記の取得このコードを書いたとき

トークン "他" の

構文エラー、予想

+0

インデントあなたのコードを正しくフォーマットし、それが意志より読みやすくする。条件付きステートメントやループ、質の高い保険問題には常に中カッコを使用することをお勧めします。 – Snicolas

+0

私は個人的に一種の私が感じるように、いくつかのケースでは、中括弧を省略するように、彼らは(場合によっては)ちょうど余分視覚的混乱しています。しかし、ブレース公式[Javaのコーディング規則](http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-142311.html#449)任務は常にif文を使用する必要があります。したがって、私は時には中括弧を省略するような衝動を感じても、私はいつも私のifを括っています。追記として – Alderath

+0

は、ヒット= randGen.nextInt(10)+ 1 + charlightcc int型。あなたは10のcharlightcc、わからないthatsの意図した動作 – Peter

答えて

2

この

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."); 
} 
+0

ああを使用する場合は、必ずヒットになります!わかりました!私はあなたが私をすべてのものを取り除くことを意味していることを理解していませんでした!ありがとうございました! – Emil

2

から;を削除するにはif文

;を削除しながら、の行末

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."); 
0

ですif文を厳密に必要としなくても{}を使う方が良いです。あなたが追加した場合、我々はあなたのコードlitle-フォーマットし直す場合は、{}それは

...何が起こっているのは明らかだ:

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."); 
      } 

    } 
} 
関連する問題