2016-12-17 79 views
-1

我寫了這個:項目歐拉#4爪哇 - 無輸出

class Problem4 { 
    public static void main(String[] args) { 
    int reversenum = 0; 
    for (int i=100; i<1000; i++) { 
     for (int j=100; j<1000; j++) { 
     int tempPro = i*j; 
     int temptempfun = tempPro; 
     while (tempPro != 0) { 
      reversenum *= 10; 
      reversenum += tempPro%10; 
      tempPro /= 10; 
     } 
     if (reversenum == temptempfun) { 
      System.out.println(reversenum); 
     } 
     } 
    } 
    } 
} 

我沒有得到任何輸出,當我運行這個,我想不出什麼我做錯了。

編輯:

通過移動reversenum聲明內內部for循環固定它。

class Problem4 { 
    public static void main(String[] args) { 
    int largest = 0; 
    for (int i=100; i<1000; i++) { 
     for (int j=100; j<1000; j++) { 
     int tempPro = i*j; 
     int temptempfun = tempPro; 
     int reversenum = 0; 
     while (tempPro != 0) { 
      reversenum *= 10; 
      reversenum += tempPro%10; 
      tempPro /= 10; 
     } 
     if (reversenum == temptempfun) { 
      if (reversenum > largest) { 
      largest = reversenum; 
      } 
     } 
     } 
    } 
    System.out.println(largest); 
    } 
} 
+1

試着把別人看看數字是什麼,並有一個想法? – doctorlove

+0

嘗試匹配他們給定的兩位數字 - 無論如何都將更快地進行調試,然後嘗試3位數字。 – doctorlove

回答

0

在這一行:

int reversenum = 0; 

要定義reversenum是零並且在while循環:

while (tempPro != 0) { 
      reversenum *= 10; 

嘗試乘以數量爲零,並將其分配到這個變量再次。可能的問題在於這個邏輯。你應該給你的reversenum一個非零的初始值,你應該在while循環之前清除它,因爲reversenum變量將存儲先前迭代的值。

編輯:

你需要調試在IDE中的代碼,比如Eclipse。如果你這樣做,那麼你可以很容易地理解你的代碼中發生了什麼。

+0

您的回答部分正確。我通過在inner for循環內移動reverseenum聲明來修復我的代碼。 – iFlames

3

兩個整數reversenum和temptempfun在循環中不相等。這就是爲什麼,它不能打印任何東西。

0

很明顯,reversenum是一個嘗試顛倒數字(以檢查迴文),所以需要每次更改(不受先前嘗試的影響)。

此外,乘以0,當它爲零時將保持爲零。

這將打印一些東西(但是您需要考慮如何找到您實際需要的答案)。

class Problem4 { 
    public static void main(String[] args) { 
    for (int i=100; i<1000; i++) { 
     for (int j=100; j<1000; j++) { 
     int reversenum = 0; //<- moved to change each time 
     int tempPro = i*j; 
     int temptempfun = tempPro; 
     while (tempPro != 0) { 
      reversenum *= 10; 
      reversenum += tempPro%10; 
      tempPro /= 10; 
     } 
     if (reversenum == temptempfun) { 
      System.out.println(reversenum); 
     } 
     } 
    } 
    } 
} 
+0

當您在while循環中交換這兩行時,它會將最終的反轉數乘以10,並給出錯誤的輸出。我所做的是並且正確地工作。 – iFlames

+0

很高興你解決它 – doctorlove

+0

不知道爲什麼我交換行 - 把他們回來 – doctorlove