我已编写以下代码,但具有以下条件。我不被允许使用任何String或Math类,所以我用于循环,以打破数字。
适用于例如153和54883但是对于像4679307774这样的数字,扫描仪类型会给我一个misMatchExeption
。我明白为什么,我尝试使用long类型,程序可以正常工作,但是(由于Two`s)没有给出正确答案。
我想知道,如何解决这个问题,或者更好地说出我可以尝试的其他事情。
Scanner sc = new Scanner(System.in);
System.out.println("Please enter any Integer above zero here : ");
System.out.println("Enter length of number, from 1 onwards: ");
int num = sc.nextInt();
int pow = sc.nextInt();
int narziss = 0; // TODO mismatchexeption
int single;
int a;
do {
a = 1;
single = num % 10; // takes each chiffre from behind, for as long as for runs.
System.out.println("single modulo : " + single);
num = num / 10;
for (int i = 0; i < pow; i++) {
a *= single;
System.out.println(a);
}
narziss += a;
System.out.println("narziss: " + narziss);
} while (num != 0);
System.out.println(" if the last shown number, " +
"is the same as you have typed in, " +
"you found an so-called armstrong number! ");
}
}
答案 0 :(得分:1)
我问的问题可以用Integer以外的类型来解决。 例如......或浮点类型。
请务必更改或投射所有相关部件,如扫描仪,循环等。