我正在尝试使用if语句将变量限制为大于零,并且以下代码只是运行,好像if语句不存在:
private void startGame(int h1, int h2, int w1, int w2) {
this.h1 = h1;
this.w1 = w1;
this.h2 = h2;
this.w2 = w2;
Intent intent = new Intent(this, Game.class);
if((h1 > 0) || (w1 > 0) || (h2 > 0) || (w2 > 0)){
startActivity(intent);
}
else {
finish();
}
}
答案 0 :(得分:7)
您的一个变量大于0。
将if语句读为“如果h1大于零或者w1大于零OR ...”或更简单地“如果h1,w1,h2,w2中的任何一个大于零”。
我认为你想要的是和。你希望它读“如果h1大于零并且w1大于零......”
“and”的运算符为&&
,而不是||
。
if(h1 > 0 && w1 > 0 && h2 > 0 && w2 > 0){
另外,@ Mahesh的评论是正确的 - 如果你的逻辑陈述不符合你的想法,打印出该语句中使用的变量,并用这些变量“运行”你脑中的语句逻辑。很快就会明白什么是错的。
答案 1 :(得分:2)
我认为您打算使用逻辑AND(&&)代替OR(||)
当任何一个维度高于零时,您发布的内容将通过检查。
private void startGame(int h1, int h2, int w1, int w2) {
this.h1 = h1;
this.w1 = w1;
this.h2 = h2;
this.w2 = w2;
Intent intent = new Intent(this, Game.class);
if((h1 > 0) && (w1 > 0) && (h2 > 0) && (w2 > 0)){
startActivity(intent);
}
else {
finish();
}
}
这将确保所有维度都大于零。