谁帮我找找下面代码有什么错误

来源:百度知道 编辑:UC知道 时间:2024/05/31 02:30:14
编译倒是通过了,可是运行起来,答案和书上的对不上 书上的运行结果是

找到第1个水仙花数:153
找到第2个水仙花数:370
找到第3个水仙花数:371
找到第4个水仙花数:407

我自己的运行结果是 找到第1个水仙花数496

public class a {
public static void main(String args[]) {
int i,j,k,n=100,m=1;
while(n<1000){
i = n/100;
j = (n-100*i)%10;
k = n%10;
if(Math.pow(i,3)+Math.pow(j,3)+Math.pow(k,3) == n)
System.out.println("找到第"+ m++ +"个水仙花数"+n);
n++;

}
}
}

中间j的赋值语句应该是j=(n-100*i)/10
不能用%,那样求出来的是个位而不是十位
%是求余

那就对了 因为
if(Math.pow(i,3)+Math.pow(j,3)+Math.pow(k,3) == n)
System.out.println("找到第"+ m++ +"个水仙花数"+n);
这里产生的数都是随机的
你想啊 随机怎么能随同样的数啊?