水仙花 关于字符类型的一些转换
下面是正确的案例
import java.util.Scanner;
public class Main {
public static long pows(long n,int t){
long sum = 1;
for(int i=0;i<t;i++)
{
sum*=n;
}
return sum;
}
public static void main(String[] args)
{
Scanner sn = new Scanner(System.in);
int x = sn.nextInt();
long n= pows(10,x-1);
for(long i=n;i<n*10;i++)
{
long t = 0;
long num =i;
long sum = 0;
while(num>0){
t = num % 10;
num /= 10;
sum += pows(t,x);
}
if(i == sum)
{
System.out.println(i);
}
}
}
}
以下是一个错误的案例
尽管 eclipse 上是可以执行的程序 但是却有类型定义不清
import java.util.Scanner;
import java.lang.Math;//在预定的pows(a,b)函数中 a,b的类型是一样的
public class test1 {
public static void main(String[] args)
{
Scanner sn = new Scanner(System.in);
int x = sn.nextInt();//如果是七位及以上的话int 将达到边界所以应当考虑 long 类型
int n=(int) Math.pow(10,x-1);
int a,b,c,d;//这种方法比较繁琐 但是方便理解
for(int i=n;i<n*10;i++)
{
a= i%10;
d=i/10;
b=d/10;
c=d%10;
if(i == Math.pow(a,3) + Math.pow(b,3) +Math.pow(c,3))
{
System.out.println(i);
}
}
}
}