首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用"for-loops“

使用"for-loops“
EN

Stack Overflow用户
提问于 2011-10-31 18:58:22
回答 2查看 175关注 0票数 0

我正在使用"Java how to program“(Deitel和Deitel)学习Java。现在,我被困在解决一个练习中,这个练习要求我打印出一个表,其中所有可能的"pythagoran tripples“值都在500以下。我应该使用一个嵌套的"for-loop“来检查所有的可能性。换句话说: a、b和c必须是整数。下面的表达式必须是真的: a2 + b2 = c2,并且程序应该打印一个包含所有可能的组合的表(其中c< 500 )。我就是想不通。有谁能帮帮我吗?我的代码只打印出第一个组合(3 4 5),如下所示:

代码语言:javascript
复制
    public class Pythagoras 
            {
        public static void main(String[] args) 
            {

            for (int a = 3, b = 4, c = 5; (Math.pow(a, 2) + Math.pow(b, 2) == Math.pow(c, 2)) && (c <= 500); c++)
        {
        System.out.printf("%d %20d %20d", a, b, c);
        }

        }

    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-31 19:06:52

您的代码只打印3 4 5,因为它只运行for循环的一次迭代。在for循环中,每次迭代都放大c,但不更改a和b,这意味着在第一次迭代之后,它将计算返回false的3^2 + 4^2 == 6^2,从而退出for循环。

要解决这个问题,您可以使用三个嵌套的for循环,如下所示:

代码语言:javascript
复制
for(int a = 1; a < 500; a++){
   for(int b = 1; b < 500;b++){
       for(int c = 1; c < 500;c++){
           if(Math.pow(c,2) == Math.pow(a,2) + Math.pow(b,2){
                // code execution
           }
       }
   }
}
票数 3
EN

Stack Overflow用户

发布于 2011-10-31 19:04:20

正如你所提到的,你应该有嵌套的循环,即对于每个变量abc,你应该有一个单独的循环来测试所有可能的值:

代码语言:javascript
复制
for(int a = 1; a <= 500; a++) {
  for(int b = 1; b <= 500; b++) {
    for(int c = 1; c <= 500; c++) {
      ...
    }
  }
}

接下来,您需要在循环中测试一个条件(即...所在的位置)。不要将输出条件与循环条件混淆(当循环终止时)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7952751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档