1 回答

TA貢獻1799條經驗 獲得超6個贊
就像其他人在這里回應的那樣,在這種情況下,您并不真正需要靜態字段。局部變量就足夠了。另外,請考慮該方法正在做什么。您總是看到打印 11 的原因是,從 返回的整數為 11,直到 if 語句 中的條件返回 true。checkNumcheckNumrevNum(n,n) == n
例如,當 i = 10 時,條件將返回 false,從而返回或 0。當 i = 11 時,條件將返回 true,從而設置為 11 并打印出來。當 i = 12 時,條件將返回 false。并且由于在這種情況下不會更改,因此返回并打印出該變量的當前值11。隨著循環的進行,將打印出 11 個實例的 11 個實例,因為下次返回 true 是 n = 22 時。revNum(10,10) == 10isReverserevNum(11,11) == 11isReverserevNum(12,12) == 12isReverserevNum(n,n) == n
相反,您應該做的是將 的返回類型更改為布爾值,以檢測此條件何時返回 true。當它發生時,只有這樣,您才應該在主方法中打印循環中的數字,以便您可以看到循環范圍內的哪些數字是回文的。checkNumi
// these variables are not really necessary
// int temp = 0;
// int isReverse;
public static int revNum(int d, int n){
int temp = 0;
for (int i = 0; i<(Math.log10(d)); i++) {
temp *= 10;
temp += n%10;
n = (n - (n%10))/10;
}
return temp;
}
public static boolean checkNum(int n) {
return revNum(n,n) == n;
}
public static void main(String[] args) {
for(int i = 10; i <1000; i++) {
if(checkNum(i)) {
System.out.println(i);
}
}
}
添加回答
舉報