2012-04-05 52 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."); 

      { 

    } 
} 
} 

当我写了这个代码,我得到下面所述的错误,我不知道什么是错! 这是我的错误,他们apear对“否则,如果”在底部。我“否则,如果”命令不能正常工作。

令牌 “其他”

语法错误,而预计

+0

缩进你的代码格式正确,它会使其更具可读性。它是一个好主意,始终使用conditionnal语句和循环,优质的保险事括号。 – Snicolas 2012-04-05 07:01:39

+0

我个人有点像省略括号在某些情况下,因为我觉得他们只是多余的视觉上的混乱(在某些情况下)。但是,官方的[Java编码约定](http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-142311.html#449)要求在括号总是用于if语句。因此,即使我有时会觉得省略大括号,我总是会支持我的ifs。 – Alderath 2012-04-05 07:14:14

+0

作为旁注,诠释命中= randGen.nextInt(10)+ 1 + charlightcc;如果你使用10的charlightcc总是会导致命中,不知道这是否意图行为 – Peter 2012-04-05 07:40:52

回答

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

哦!我明白!我不明白你的意思是我要删除所有的!谢谢! – Emil 2012-04-05 07:03:55

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

这就是为什么它几乎总是即使您不严格需要,也可以更好地使用{}。如果添加{}很明显这是怎么回事..

如果我们重新格式化您的代码利尔:

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

    } 
}