------解决方案-------------------- public class ShuiXian{ public static void main(String[] args){ int i=153; int j=i/100; int k=(i/10)%10; int n=i%10; if(i>=100&&i<1000){ if(i==j*j*j+k*k*k+n*n*n){ System.out.println(i+"是水仙花数!"); }else{ System.out.println(i+"不是水仙花数!"); } }else{ System.out.println("输入的不是三位数!"); } } }
------解决方案--------------------
------解决方案--------------------
Java code
public class ShuiXian{
public static void main(String[] args){
int i=153;
int j=i/100;
int k=(i/10)%10;
int n=i%10;
if(i>=100&&i <1000){
if(i==j*j*j+k*k*k+n*n*n){
System.out.println(i+"是水仙花数!");
}else{
System.out.println(i+"不是水仙花数!");
}
}else{
System.out.println("输入的不是三位数!");
}
}
}
------解决方案--------------------
Java code
public class Test {
//把0-9的n次方先算出来保存到一个数组里,每次用到的时候直接去取,避免多次运算,提高效率.
private static final int[] arr = {0,1,8,27,64,125,216,343,512,729};
public static void main(String[] args) {
System.out.println(isArmstrongNumber(153));
}
public static boolean isArmstrongNumber(int n) {
int temp = n;
while(temp!=0) {
n -= arr[temp%10];
temp/=10;
}
return n==0;
}
}