Your code works fine only with 3 digit Amstrong numbers:
sum += (int) Math.pow((num % 10), 3);
You could avoid hardcoding this value by checking it at runtime:
public static boolean checkArmstrong(int num) {
if (num == 0)
return true; // also avoids log10(0)
int org = num, sum = 0;
int digits = (int) (Math.log10(num) + 1);
while (num > 0) {
sum += (int) Math.pow((num % 10), digits);
num /= 10;
}
return sum == org;
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…