2012-05-19 186 views
4

目標是找到最大的數字,是兩個三位數字的產物,是迴文。我在java中編寫了下面的代碼,但是當我運行它時,我沒有輸出。什麼可能是錯的?歐拉項目#4

public class Problem4{ 
    public static void main(String[] args){ 
     int reversedProduct=0; 
     int temp=0; 
     int product; 
     for (int a=100; a<1000; ++a){ 
      for (int b=100; b<1000; ++b){ 
       product=a*b; 
       while (product>0){ 
        temp = product%10; 
        reversedProduct=reversedProduct*10+temp; 
        product=product/10; 
       } if (reversedProduct==product){ 
        System.out.println(product); 
       } 
      } 
     } 
    } 
} 
+1

嘗試打印'reversedProduct'和'product',之後應該很清楚。 –

回答

5

您正在清零product反轉它的過程中。您應該製作一份副本,並將相反的產品與其進行比較。

int orig = product; 
while (product>0){ 
    temp = product%10; 
    reversedProduct=reversedProduct*10+temp; 
    product=product/10; 
} 
if (reversedProduct==orig){ 
    System.out.println(reversedProduct); 
} 

注意,在這一點上你的解決方案將打印所有迴文,而不僅僅是一個lagrest。儘管獲得最大的應該是微不足道的。

+0

我可能是錯的,但不打印產品打印0? –

+0

您還必須清除reversedProduct的先前值。 –

+0

@BobSmith你是對的,它應該打印'orig'或'reversedProduct'。這現在已經修復。 – dasblinkenlight