使用&&和循环时代码无法正常工作

时间:2014-05-30 12:15:19

标签: java while-loop

我不明白为什么我的代码不起作用,请参阅下文我应该转换此代码

 public class Iteration { 
     public static void main(String[] args) { 
         int x, y, z, sum, tal; 

         for(x=1;x<10;x++) 
             for(y=0;y<10;y++) 
                 for(z=0;z<10;z++){ 
                     tal=x*100+y*10+z; 
                     sum=(x*x*x)+(y*y*y)+(z*z*z); 
                     if(sum==tal) 
                         System.out.print(tal+" "); 
                 } 
     } 
} 

带有while循环的代码,但它的工作原理不一样!我不明白为什么......

public class testasaker { 
    public static void main(String[] args) { 
        int sum, tal, x = 1, y = 0, z = 0; 

        while (x<10 && y<10 && z<10)  { 
            tal = x * 100 + y * 10 + z; 
            sum=(x*x*x)+(y*y*y)+(z*z*z); 
            if(sum==tal) 
                System.out.print(tal+" "); 
            z++; 
            y++;
            x++;
        }
    }
}

5 个答案:

答案 0 :(得分:3)

您的第一个代码使用三个嵌套循环并生成三元组,如

(1,0,0),(1,0,1),(1,0,2),...,(1,0,9),(1,1,0),(1,1,1),...(9,9,9)

在你的第二个代码中,你只使用一个循环,同时增加三元组的每个部分:

(1,0,0),(2,1,1),(3,2,2),....,(9,8,8)

答案 1 :(得分:1)

你不能只用一个复制3个循环。你应该制作3个嵌套循环

while (x<10 )  { 
    while (y<10){
        while (z<10)
     ..................
             z++;              
        }
        y++;
    } 
    x++;
}

答案 2 :(得分:0)

它不会以相同的方式工作,因为在第一个中你使用嵌套循环,在第二个中你只使用一个循环,其中三个变量在每次迭代时递增。

答案 3 :(得分:0)

for循环中的变量从1到10运行。当x为1且y为1时,z从1到10运行。当z变为10时,y变为2,z从1开始。

       while (x<10 && y<10 && z<10)  { 
            tal = x * 100 + y * 10 + z; 
            sum=(x*x*x)+(y*y*y)+(z*z*z); 
            if(sum==tal) 
                System.out.print(tal+" "); 
            z++; 
            if(z%10==0){
               y++;
               z=0;
            }
            if(y%10==0){
               x++;
               y=0;
               z=0;
            }
        }

答案 4 :(得分:0)

public class testasaker {
    public static void main(String[] args) {
        int sum, tal, x = 1, y = 0, z = 0;

        while (x < 10) {
            while (y < 10) {
                while (z < 10) {
                    tal = x * 100 + y * 10 + z;
                    sum = (x * x * x) + (y * y * y) + (z * z * z);
                    if (sum == tal)
                        System.out.print(tal + " ");

                    z++;
                }
                z=0;
                y++;
            }
            z=0;y=0;
            x++;
        }
    }
}

应该分开while循环,并且应该重新初始化变量x, y, z