java - 为什么这个条件总是返回 false?

标签 java if-statement

谁能告诉我下面的代码有什么问题吗?它没有显示任何结果。

整数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/

相关文章:

c# - 是否只有在条件为真时才从函数返回的单行语句?

java - Java猜数程序问题

java - 如何在 HTML 中插入小程序

java - 检索 wifi 连接状态(Android)

java - 灵活搜索查询中的日期减法

Java - Selenium WebDriver - 当条件似乎已满足时不执行 IF/ELSE 语句

regex - 根据字符串模式和 ifelse 的存在创建列

c++ - 命令我检查字符串得到错误的输出

java - 如果 Web 服务器闲置一周左右,Spring bean 会发生什么情况?

java - MouseJointDef libgdx - 像愤怒的小鸟一样绘制轨迹线