来帮我看看这个JAVA程序哪里不对啊
publicclasswty5{publicstaticvoidmain(String[]args){inta,b,c,x;for(x=4;x<10;x++){for(a...
public class wty5
{public static void main(String[] args)
{int a,b,c,x;
for(x=4;x<10;x++)
{for(a=1;a<x;a++)
{for(b=2;b<x;b++)
{for(c=3;c<x;c++)
if(x*x*x==(a*a*a+b*b*b+c*c*c))
System.out.println(x);
}
}
}
}
}
这个程序运行的结果是许多个都一样的答案, 循环的哪里不对了 展开
{public static void main(String[] args)
{int a,b,c,x;
for(x=4;x<10;x++)
{for(a=1;a<x;a++)
{for(b=2;b<x;b++)
{for(c=3;c<x;c++)
if(x*x*x==(a*a*a+b*b*b+c*c*c))
System.out.println(x);
}
}
}
}
}
这个程序运行的结果是许多个都一样的答案, 循环的哪里不对了 展开
3个回答
展开全部
我刚运行了一下,程序你没错,是这样的。你把a b c 分别打印出来就知道了
如图:
小分析一下:
我想你的题目是:求一个4~10以内的整数,这个整数的立方是小于它的三个数的立方之和
从输出结果倒推一下:
6*6*6=3*3*3+4*4*4+5*5*5,9*9*9=1*1*1+6*6*6+8*8*8
x 分别可以是6 和 9
先不看程序逻辑,当x为6时,a b c都可能是3 4 5; 当x为9时,a b c都有可能是1 6 8
再来看看程序本身:
当x为6时,a为1~5 b为2~5 c为3~5;所以打印出来了6个6,也就是3 4 5不同的组合。
当x为9时,a为1~8 b为2~8 c为3~8;所以a b c,其中b c 不能为1,所以只能是1 6 8和1 8 6 两种不同的组合,故打印出了2个9。
分析结束。。
建议:
遇到问题不要着急,冷静分析,祝你好运
展开全部
必然运行很多次,因为x是变化的。
每次你最里边的for,那个x都在增大。外边x=4时第一个循环就运行了6遍。你算算,如果最外层循环到结束,运行多少次。
每次你最里边的for,那个x都在增大。外边x=4时第一个循环就运行了6遍。你算算,如果最外层循环到结束,运行多少次。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询