试图编写一个逻辑来检查给定的号码是否是阿姆斯特朗号码。在这里我需要帮助。尽管这些值相同,但始终会显示false,并且按照逻辑说数字不相等。
package src;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ArmStrongTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(isArmStrongNumber(153));// prints false;
}
private static boolean isArmStrongNumber(int nos) {
List<Integer> digits = new ArrayList<Integer>();
int itrNumbers = 0;
while (nos > 0) {
digits.add(nos % 10);
nos /= 10;
}
Collections.reverse(digits);
for (int i : digits) {
itrNumbers += i * i * i;
}
System.out.println(java.util.Objects.equals(Integer.valueOf(itrNumbers), Integer.valueOf(nos)));// prints false;
if (itrNumbers == nos ) { // both values are 153 but it says not equals
return true;
} else {
return false;
}
}
}
如何解决这个问题?我在代码中遗漏了什么?我不知道。我一直都在虚假印刷。在这种情况下如何解决这个问题?