来帮我看看这个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);
}
}
}
}
}
这个程序运行的结果是许多个都一样的答案, 循环的哪里不对了
展开
 我来答
百度网友cc610fc51
2013-12-18 · 超过23用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:50万
展开全部

我刚运行了一下,程序你没错,是这样的。你把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。


分析结束。。


建议:

 遇到问题不要着急,冷静分析,祝你好运

响亮的ITdog
2013-12-17 · TA获得超过167个赞
知道小有建树答主
回答量:122
采纳率:0%
帮助的人:96.7万
展开全部
循环错没错我还没看 你最内层的一个循环没有加大括号,
for(c=3;c<x;c++)
if(x*x*x==(a*a*a+b*b*b+c*c*c))
这两句相当于没起作用
你要把if(x*x*x==(a*a*a+b*b*b+c*c*c))
System.out.println(x);
用大括号括起来,才算是在for(c=3;c<x;c++)这个循环内.懂否?
追问

加上后还是一样的

追答
把输出语句放到最外层循环里去内层循环多次循环的时候x是不变的.所以会输出多次,或者说你输出的时候把a,b,c的值在内层一起输出出来你就明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yudiangong
2013-12-17 · TA获得超过819个赞
知道小有建树答主
回答量:1504
采纳率:0%
帮助的人:705万
展开全部
必然运行很多次,因为x是变化的。
每次你最里边的for,那个x都在增大。外边x=4时第一个循环就运行了6遍。你算算,如果最外层循环到结束,运行多少次。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式