我“否则,如果”命令不能正常工作。
问题描述:
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对“否则,如果”在底部。我“否则,如果”命令不能正常工作。
令牌 “其他”语法错误,而预计
答
的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
答
从删除;
与一行的结尾
答
只是一个小错误...
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.");
答
这就是为什么它几乎总是即使您不严格需要,也可以更好地使用{}。如果添加{}很明显这是怎么回事..
如果我们重新格式化您的代码利尔:
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.");
}
}
}
缩进你的代码格式正确,它会使其更具可读性。它是一个好主意,始终使用conditionnal语句和循环,优质的保险事括号。 – Snicolas 2012-04-05 07:01:39
我个人有点像省略括号在某些情况下,因为我觉得他们只是多余的视觉上的混乱(在某些情况下)。但是,官方的[Java编码约定](http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-142311.html#449)要求在括号总是用于if语句。因此,即使我有时会觉得省略大括号,我总是会支持我的ifs。 – Alderath 2012-04-05 07:14:14
作为旁注,诠释命中= randGen.nextInt(10)+ 1 + charlightcc;如果你使用10的charlightcc总是会导致命中,不知道这是否意图行为 – Peter 2012-04-05 07:40:52