这段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;
}
}
} 展开
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;
}
}
} 展开
6个回答
展开全部
这段程序目的是什么?找到所有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;
}
首先,先说一下这段程序中的语法问题:
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;
}
展开全部
首先代码应该标签不能这么写吧,可以考虑用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
然后执行完毕,什么也不会打印。
其实你的代码的有很多问题的。
第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
然后执行完毕,什么也不会打印。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先continue应该用goto替换,但是虽然goto是保留字,却不能用,于是..
其次continue next只能用于循环,所以next之后不应该是if,而应该是while..
再其次else if,没有表达式,纠结=.=
还有个事情就是System.out.println(+sum)这句,根据上下文,貌似这里应该是++sum,而不是+sum..
其次continue next只能用于循环,所以next之后不应该是if,而应该是while..
再其次else if,没有表达式,纠结=.=
还有个事情就是System.out.println(+sum)这句,根据上下文,貌似这里应该是++sum,而不是+sum..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
else 后面多个if
建议你的程序不要这样写
改成for continue 比较好
建议你的程序不要这样写
改成for continue 比较好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
}
}
{
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);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
else if 的if去掉
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询