谁能告诉我下面的代码有什么问题吗?它没有显示任何结果。
整数a、b、c是直角三角形的边。(正在解决Project Euler问题39)
如果我使用||它代替 && ,显示基于 || 的所需结果健康)状况。但不适用于 && 条件
public static void main(String[] args) {
int a,b,c;
for (a=1;a<120;a++){
for(b=120;b>0;b--){
c= 120-(a+b);
if (((c) > (a+b)) && ((c*c)==(a*a)+(b*b))){
System.out.println(a + " , " + b +" , " + c);
System.out.println("**************");
}
}
}
}
最佳答案
很简单,因为这个表达式:
((c) > (a+b))
...在您的示例中,对于任何有效直角三角形都不会返回 true,并且由于 && 条件要求两个操作数都计算为 true,因此不会执行 if 语句。
如果输入以下几行,您可以清楚地看到这一点:
System.out.println("C: " + c);
System.out.println("A+B: " + a+b);
关于java - 为什么这个条件总是返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16561005/