我正在编写一个方法来确定一个数字是否是阿姆斯特朗的新兵训练营作业,并且不允许我使用数学课程。为什么这不起作用?
public static boolean isArmstrong(int n) {
String strNum = "" + n;
int pow = strNum.length();
int sum = 1;
for (int i = 0; i < strNum.length(); i++) {
int eachDigit = Integer.parseInt(strNum.substring(i, i + 1));
for (int j = 0; j < pow; j++) {
sum *= eachDigit;
}
}
System.out.println(sum);
return sum == n;
}
public static void main(String[] args) {
System.out.println(isArmstrong(153));
}
打印:
3375
false
我需要再添加一个 var tempSum 来保存单独的数字,然后我可以将它们加在一起。
public static boolean isArmstrong(int n){
String strNum = "" + n;
int pow = strNum.length();
int sum = 0;
int tempSum = 1;
for(int i = 0; i < strNum.length(); i++){
int eachDigit = Integer.parseInt(strNum.substring(i , i + 1));
tempSum = 1;
for (int j = 0; j < pow; j++) {
tempSum *= eachDigit;
}
sum += tempSum;
}
System.out.println(sum);
return sum == n;
}