我为我的问题搜索了很多主题,阅读了很多......但它们并不像我的那样。
我从Eclipse IDE收到“无法访问的代码”编译错误。
我不明白为什么我的代码无法访问!虽然很简单! 这是......
public String doAction(int action, Player P1, Player P2) {
switch(action) {
case 'a':
case 'A':
CriticalChance = ThreadLocalRandom.current() .nextInt(CritMin,CritMax+1);
if(CriticalChance <= 5) {
int temp = ThreadLocalRandom.current().nextInt(31,50+1);
P1.setAttack(temp);
} else {
P2.deductHp(P1.newNormalAttack());
}
if(CriticalChance <= 5) {
String temp = String.format("CRITICAL STRIKE! "+P1.getName()+" did "+P1.getAttack()+" damage to "+P2.getName()+"\n");
return temp;
} else {
String temp = String.format(P1.getName()+" did "+P1.getAttack()+" damage to "+P2.getName()+"\n");
return temp;
}
if(P2.getHp() > 0) {
String temp = String.format(P2.getName()+"'s Remaining HP is "+P2.getHp()+"\n");
return temp;
} else {
String temp = String.format(P2.getName()+" Bled To Death!!\n");
return temp;
}
break;
}
}
请帮忙!如果您需要更多信息,请告诉我。
答案 0 :(得分:3)
它永远不会达到break
语句,因为如果在每个分支中都有return
语句,那么它肯定会从其中一个语句返回。
答案 1 :(得分:3)
自此之后回归:
if(CriticalChance <= 5)
{
String temp = String.format("CRITICAL STRIKE! "+P1.getName()+" did "+P1.getAttack()+" damage to "+P2.getName()+"\n");
return temp;
}
else
{
String temp = String.format(P1.getName()+" did "+P1.getAttack()+" damage to "+P2.getName()+"\n");
return temp;
}
此后的任何代码无法访问(永远不会被执行),因为它在if
和else
条件下都会返回。因此编译器抱怨。
答案 2 :(得分:2)
下一个代码无法访问,因为没有条件为什么代码应该在if-else语句之后继续。在任何一种情况下,代码都将返回一个值。
if(CriticalChance <= 5)
{
String temp = String.format("CRITICAL STRIKE! "+P1.getName()+" did "+P1.getAttack()+" damage to "+P2.getName()+"\n");
return temp;
}
else
{
String temp = String.format(P1.getName()+" did "+P1.getAttack()+" damage to "+P2.getName()+"\n");
return temp;
}
无法到达:
if(P2.getHp() > 0)
{
String temp = String.format(P2.getName()+"'s Remaining HP is "+P2.getHp()+"\n");
return temp;
}
else
{
String temp = String.format(P2.getName()+" Bled To Death!!\n");
return temp;
}
break;
}
}}
答案 3 :(得分:2)
查看以if(CriticalChance <= 5)
开头的代码。请注意,“then”和“else”都以return
语句结尾。这意味着if
之后的语句无法访问。 (你也可以用下一个if
语句做同样的事情......)
我还应该指出,您通过命名变量“CriticalChance”,“CritMin”和“CritMax”来违反公认的编码标准。变量名应始终以小写字母开头。
答案 4 :(得分:1)
它永远不会到达休息时间;声明,因为你要从之前的if和else返回。
答案 5 :(得分:1)
if(CriticalChance <= 5)
{
String temp = String.format("CRITICAL STRIKE! "+P1.getName()+" did "+P1.getAttack()+" damage to "+P2.getName()+"\n");
return temp;
}
else
{
String temp = String.format(P1.getName()+" did "+P1.getAttack()+" damage to "+P2.getName()+"\n");
return temp;
}
在此块下方,您的代码无法访问。不会执行。
答案 6 :(得分:1)
这是因为你的return temp
语句,因此无论CriticalChance
的值是什么,都不会执行此代码。 if
或else
,无论执行哪个条件,函数都将返回,不再执行任何代码。