2017-01-06 1 views
0

Я пытаюсь найти самый большой палиндром из продукта 2 3-значного числа (100-999). Мой подход состоял в том, чтобы проверить, является ли это палиндром или не использует String. Я получаю небольшие значения.Почему это не палиндром?

import acm.program.*; 

public class Palindrom extends ConsoleProgram{ 

    public void run(){ 
     int last = 0; 
     for (int i = 100; i <= 999; i ++){ 
      for (int k = 100; k <= 999; k++){ 
       int p = i*k; 
       String str = "" + p; 
       if(isPalindorme(p, str)){ 
        last = p; 

       } 
      } 
     } 
     println(last); 
    } 

    public boolean isPalindorme(int p, String str){ 
     for (int i = 0; i < str.length()/2; i++){ 
      if (str.charAt(i) != str.charAt(str.length()-1-i)){ 
       return false; 
      } 
     } 
     return true;  
    } 

} 

Я думаю, что, возможно, эта ошибка в этой строке:

String str = "" + p; 
+2

Я предлагаю вам выполнить код в своем отладчике, чтобы найти строку, которая не выполняет то, что вы ожидали от нее. подсказка: самый большой продукт, вероятно, будет одним из самых больших значений, поэтому вы можете начать сверху вниз, также вы можете игнорировать, где i

+1

Что-то не так с 'return new StringBuilder (str) .reverse(). Equals (str);'? – Bohemian

ответ

2

Вы должны также проверить, что p > last.

 Смежные вопросы

  • Нет связанных вопросов^_^