【问题标题】:Special Pythagorean Triplet特殊的毕达哥拉斯三元组
【发布时间】:2016-04-28 21:38:23
【问题描述】:

我的代码有什么问题?当正确答案明显是 6,8 时,它会打印 2,2

public static void main(String[] args) {

    int a = 1;
    int b = 1;
    int answer = 0;
    int j = 4;
    while (j == 4) {
        for (a = 1; a <= 10; a++) {
            for (b = 1; b <= 10; b++) {
                answer = a * a + b * b;
                if (answer == 100) {
                    j = 10;
                }
            }
        }
    }
    System.out.println(a + " " + b);
}

【问题讨论】:

  • 检查while循环是停止还是继续
  • 为什么不只是while(answer != 100)

标签: java pythagorean


【解决方案1】:

if(answer == 100); if 后面多了一个分号。

这将导致它执行j = 10;,无论answer等于什么

【讨论】:

  • 您递增ab 的方式,a 将始终等于b,因此它们永远不会是 6 和 8。它们将变为 (1,1) (2,2) 等
  • 是的,但它仍然打印 11,11
【解决方案2】:

您同时递增 a 和 b。在您的代码中,这两个数字将始终相等。此外,当您退出循环时,您并没有测试匹配。

【讨论】:

  • 我做了一个 for 循环,分别增加它们,但它仍然打印 11,11
  • 删除while循环,将第一个for循环标记为outer并将j=10替换为break outer;。您的 j=10 不会破坏内部循环。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多