sunwujun123
孙武军
2015-04-10 02:49
采纳率: 25%
浏览 1.7k
已采纳

java我写的这个求水仙花数为什么算不出来

import java.util.Scanner;
public class Task1{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("请输入一个数");
int number = input.nextInt();

double s=0;
int[] a={0};
int i;
for(i=0;number==0;i++)
{
    a[i]=number%10;
    number=number/10;
    s=s+Math.pow(a[i],3);
}

if(number==(int)s)
    System.out.println(number+"是水仙花数");
else
    System.out.println(number+"不是水仙花数");

}
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • danielinbiti
    danielinbiti 2015-04-10 03:02
    已采纳
     Scanner input = new Scanner(System.in);
            System.out.print("请输入一个数");
            int number = input.nextInt();
            int number1 = number;
            double s=0;
            int a;//i改变是会数组越界的,这里也用不上数组
            int i;
            for(i=0;number>0;i++)//原来输入的number不等于0,为false,是不进for循环的
            {
                a=number%10;
                number=number/10;
                s=s+Math.pow(a,3);
            }
    
            if(number1==(int)s)//原来的number是会变的,比较是不对的,改成number1
                System.out.println(number1+"是水仙花数");
            else
                System.out.println(number+"不是水仙花数");
    
    点赞 评论
  • bdmh
    bdmh 2015-04-10 02:56

    参考

         int x=100,i,a,b,c;
        for(;x<=999;x++)
            {
            a=x%10;b=((x-a)%100)/10;c=(x-b*10-a)/100;/*a为个位,b为十位,c为百位*/       
            if(x==(Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3)))
            System.out.print(x+"\t");
            }
    
        }
    
    点赞 评论
  • piao00lingping
    piao00lingping 2015-04-10 02:57

    因为那个number被你改成了0呀,你在对number操作的时候,将number的值改变了。所以最后跟s比较时,当然不相等算不出来呀。

    点赞 评论
  • avenccssddnn
    ipple1986 2015-04-13 05:50

    import java.util.Scanner;
    public class Main {
    public static void main(String args[]){

        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        scanner.close();
        int tmp = num;
        Double result = 0d;
        while(tmp>0){
            result += Math.pow(tmp%10, 3);
            tmp/=10;
        }
        if(result.intValue()==num){
            System.out.println("YES");
        }else{
            System.out.println("NO");
        }
    }
    

    }

    点赞 评论

相关推荐