我制作的 Armstrong 數字檢查器不僅針對我使用 Math.pow() 方法的 3 位數字,而且在使用它之后,如果條件為真,if else 陳述句也不起作用。
這是代碼:
import java.util.Scanner;
import java.lang.Math;
class Main {
////////////////////////////////////////////
////////////////////////////////////////////
public static void main(String args[])
{
System.out.println("Hello world!");
Scanner sc = new
Scanner(System.in);
int num = sc.nextInt();
int numc = num ;
double rem = 0;
double cu = 0;
int val = 0;
int val2 = 0;
while(num != 0){
rem = num%10;
while(numc != 0){
numc /=10;
int i = 0;
i ;
val2 = i;
}
cu = Math.pow(rem,val2 );
val = cu;
num /= 10;
}
if(val == numc){
System.out.println("Yes its a " val2 " Armstrong number because its returning " val "after Calculations ");
}
else{
System.out.println("No its not a " val2 " digit Armstrong number because its returning " val " after Calculations ");
}
}
}
///////////////////////////////////////////
這是我的代碼的編譯:

uj5u.com熱心網友回復:
if(val == numc){- 如果這部分是您的問題的根本原因。你除以numc10 進行計算。所以最后它會變成 0 。所以你將檢查val == 0哪個進入else 回圈。
所以我建議將用戶的輸入分配給另一個變數,您可以使用它來檢查最終的 if - else 部分。
喜歡int input = num 和在最后 if(val==input){。這將解決您的問題。
uj5u.com熱心網友回復:
由于“/= 10”操作,num 和 numc 變為零。因此 if 條件失敗。
此外,您不需要每次都計算整數的長度。
沒有評論的聲譽,因此提供了完整的解決方案。
以下是我對您的問題的解決方案。一切順利!
import java.util.Scanner;
import java.lang.Math;
class Main {
////////////////////////////////////////////
////////////////////////////////////////////
public static void main(String args[]) {
System.out.println("Hello world!\n");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int numc = num;
double rem = 0;
double cu = 0;
int val = 0;
int val2 = countNumOfDigits(num);
while (num != 0) {
rem = num % 10;
cu = Math.pow(rem, val2);
val = cu;
num /= 10;
}
if (val == numc) {
System.out.println("Yes its a " val2 " digit Armstrong number because its returning " val
"after Calculations ");
} else {
System.out.println("No its not a " val2 " digit Armstrong number because its returning " val
" after Calculations ");
}
}
private static int countNumOfDigits(int number) {
if (number < 100000) {
if (number < 100) {
if (number < 10) {
return 1;
} else {
return 2;
}
} else {
if (number < 1000) {
return 3;
} else {
if (number < 10000) {
return 4;
} else {
return 5;
}
}
}
} else {
if (number < 10000000) {
if (number < 1000000) {
return 6;
} else {
return 7;
}
} else {
if (number < 100000000) {
return 8;
} else {
if (number < 1000000000) {
return 9;
} else {
return 10;
}
}
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/451706.html
