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

问题描述

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+"不是水仙花数");

}
}

解决方案

 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+"不是水仙花数");

解决方案二:

参考

     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");
        }

    }

解决方案三:

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

解决方案四:

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");
    }
}

}

时间: 2024-08-01 15:30:54

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

php中如何求水仙花数优化

水仙花数是指一个n位数(n>=3),它每个位上数字的n次幂之和等于它本身,n为它的位数.(例如:1^3+5^3+3^3 = 153) 水仙花数又称阿姆斯特朗数. 三位的水仙花数有4个:153,370,371,407 四位的水仙花数有3个:1634,8208,9474 五位的水仙花数有3个:54748,92727,93084 六位的水仙花数有1个:548834 七位的水仙花数有4个:1741725,4210818,9800817,9926315 八位的水仙花数有3个:24678050,246780

这是求水仙花数的代码,请大神指出错误

问题描述 这是求水仙花数的代码,请大神指出错误 程序运行得不出结果 解决方案 #include void main() { int i,a,b,c; printf("水仙花数:n"); for(i=100;i<=999;i++) { a=i/100 ; b=(i-100*a)/10 ; c=i-100*a-10*b; if(i==a*a*a+b*b*b+c*c*c) printf("%dn",i); } } 解决方案二: #include <stdio.

java求水仙花数--简单

1 public class hello { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 int ge = 1000; 8 int shi = 0; 9 int bai = 0; 10 int sxnum = 0; 11 for (int i = 100; i < 1000; i++){ 12 ge = i % 10; 13 shi = (i / 10) % 10; 14 bai = i /

printf-求水仙花数(即一个数等于他的个十百位数字的立方和)。这样写为什么不正确?

问题描述 求水仙花数(即一个数等于他的个十百位数字的立方和).这样写为什么不正确? int n,g,s,b; for(n=100;n<1000;n++) { g=n%10; s=(n/10)%10; b=n/100; n=g*g*g+s*s*s+b*b*b; printf("%5d",n); } system("pause"); 为什么n=g*g*g+s*s*s+b*b*b;一定要写成if(n==g*g*g+s*s*s+b*b*b)才正确? 解决方案 n=g*

C语言写的求水仙数

C语言写的求水仙数,判断并输出水仙数的部分是在函数里面实现,代码如下:: //本人英文水平不是很好所以就拿中文做注释#include "stdio.h"void is(int a,int b)...{    //定义三个变量作为    int i,j,k;    for(;a<=b;a++)    ...{        i=a%10;//所求数的个位        j=(a/10)%10;//所求数的十位        k=a/100;//所求数的百位        if(i*

c语言-C语言用递归函数输出1000以内的水仙花数,不得使用循环,请问怎么写。

问题描述 C语言用递归函数输出1000以内的水仙花数,不得使用循环,请问怎么写. C语言用递归函数输出1000以内的水仙花数,不得使用循环,请问怎么写. 解决方案 #include <stdio.h> void fun(int n) { if(n<100 || n>1000) return; int a,b,c; c=n%10; b=n/10%10; a=n/100%10; if(a*a*a+b*b*b+c*c*c == n) printf("%dn",n);

java源码-写接口,求大神源码??

问题描述 写接口,求大神源码?? 求大神源码????????????????????????????????????????????????????????????????开发源码"> 解决方案 import java.util.Scanner; interface Shape { /* * */ double getArea(); double getCircumsta(); } class Triangle implements Shape { /* * */ private doub

用Java怎么写后台回复模块的代码,求代码。

问题描述 用Java怎么写后台回复模块的代码,求代码. 就是网站提问的问题,后台需要回复的那种代码.求大神解救. 解决方案 无非就是留言板,只是显示数据的代码不放在当前页,而是放在"后台". 具体google "jsp留言板" 解决方案二: 你没有具体的东西让人如何给你代码! 给你思路差不多,找到前台模块调用的方法,以及数据库涉及的表字段. 如果表设计没问题应该预留回复字段. 你只要写个方法把回复信息存到预留的字段里,并在回复页面调用这个方法就ok了!

java验证微博账号的代码怎么写?急求大神指教········

问题描述 java验证微博账号的代码怎么写?急求大神指教········ 要怎么验证字符串是微博账号啊?如果该字符串是微博账号返回true,否则返回false,怎么才能验证它是不是微博的账号呢??? 解决方案 微博账户就是邮箱地址啊,用正则表达式匹配下. 解决方案二: 新浪邮箱.拿到后匹配,或者是uid 解决方案三: 微博并不一定用新浪的邮箱.我自己就用gmail的 解决方案四: 我一个邮箱,就没有注册过新浪微博,只能通过新浪微博的官方接口来验证是否可以登陆 解决方案五: 可以考虑通过微博接口,