我不明白为什么我的代码不起作用,请参阅下文我应该转换此代码
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++;
}
}
}
答案 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
。