这段Java改嘛那里错了?

packageworkshop;publicclassShuixianshu{publicstaticvoidmain(String[]args){inta=1,b=0,... package workshop;

public class Shuixianshu
{
public static void main(String[] args)
{
int a=1,b=0,c=0;
int sum=a*100+b*10+c;
next:if(sum<999)
{
if(sum==a*a*a+b*b*b+c*c*c)
System.out.println(+sum);
}
else if
{
a++;
b++;
c++;
continue next;
}
}
}
展开
 我来答
SkyerTu
2010-08-02 · TA获得超过1822个赞
知道小有建树答主
回答量:552
采纳率:0%
帮助的人:1177万
展开全部
这段程序目的是什么?找到所有100-999以内自然数中等于各个数字立方之和的数字?

首先,先说一下这段程序中的语法问题:
1)if... else... else之后不用再加if了,除非还需要加一个判断条件。
2) Java不支持跳转,只有顺序、循环、分支这三种执行次序,唯一能做的是在循环中continue或break; 所以如果你想让程序继续执行,应该用循环。

不过,我觉得你的程序逻辑还有问题,如果程序目的是一开始所说的,那么首先应该循环899次,然后在循环中挨个计算 a*100+b*10+c == a*a*a+b*b*b+c*c*c,如果相同则输出。
因此,大致如下:
for (int sum=100; sum<=999;sum++) {
int a=sum/100;
int b=(sum/10) % 10;
int c=sum%10;
if(sum==a*a*a+b*b*b+c*c*c)
System.out.println(+sum);
}
}
也可以用其他循环方式,如
for(int a=1;a<=9;a++)
for (int b=0;b<=9;b++)
for (int c=0; c<=9; c++) {
sum=a*100+b*10+c;
if(sum==a*a*a+b*b*b+c*c*c)
System.out.println(+sum);
}
}
或者:
int a=1;b=0;c=0,sum=100;
while (sum<999) {
if(sum==a*a*a+b*b*b+c*c*c)
System.out.println(+sum);
}
c++;
if (c>9) { c=0; b++; }
if (b>0) { b=0; a++; }
sum = a*100+b*10+c;
}
cuitjj
2010-08-02 · 超过16用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:27.4万
展开全部
首先代码应该标签不能这么写吧,可以考虑用while循环。
其实你的代码的有很多问题的。
第7行 sum=1*100+0*10+0=100
第8行 100显然小于999
第10行 if(sum==a*a*a+b*b*b+c*c*c) 显然两个不相等sum=100 a*a*a+b*b*b+c*c*c=1 所以为false
然后执行完毕,什么也不会打印。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GrandisGranva
2010-08-02 · 超过11用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:32万
展开全部
首先continue应该用goto替换,但是虽然goto是保留字,却不能用,于是..

其次continue next只能用于循环,所以next之后不应该是if,而应该是while..

再其次else if,没有表达式,纠结=.=

还有个事情就是System.out.println(+sum)这句,根据上下文,貌似这里应该是++sum,而不是+sum..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sumingxu
2010-08-02 · 超过42用户采纳过TA的回答
知道答主
回答量:247
采纳率:0%
帮助的人:140万
展开全部
else 后面多个if

建议你的程序不要这样写

改成for continue 比较好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
clacer1
2010-08-02
知道答主
回答量:23
采纳率:0%
帮助的人:0
展开全部
public class Shuixianshu
{
public static void main(String[] args)
{
int a=1,b=0,c=0;
int sum=a*100+b*10+c;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
if(a*100+b*10+c==a*a*a+b*b*b+c*c*c)
{
System.out.println("一共分别是:"+a+b+c);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
changsong1982
2010-08-02
知道答主
回答量:41
采纳率:0%
帮助的人:22.9万
展开全部
else if 的if去掉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式