问题描述
- 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