2013-02-10 2 views
1

Прежде всего я никому не говорю «делать домашнее задание». Мне просто нужна небольшая помощь в том, как продолжать повторять процесс. Это программа, которую я сделал ниже, и у нее есть класс тестера.Рекурсивный палиндром

Класс:

class RecursivePalindrome { 
    public static boolean isPal(String s) 
    { 
     if(s.length() == 0 || s.length() == 1) 
      return true; 
     if(s.charAt(0) == s.charAt(s.length()-1)) 
      return isPal(s.substring(1, s.length()-1)); 
     return false; 
    } 
} 

Тогда класс тестер, который имеет основной метод:

public class RecursivePalindromeTester { 
    public static void main(String[] args) 
    { 
     RecursivePalindrome Pal = new RecursivePalindrome(); 

     boolean quit = true; 
     Scanner in = new Scanner(System.in); 
     System.out.print("Enter a word to test whether it is a palindrome or not(press quit to end.): "); 
     String x = in.nextLine(); 
     while(quit) { 
      boolean itsPal = Pal.isPal(x); 
      if(itsPal == true){ 
       System.out.println(x + " is a palindrome."); 
       quit = false; 
      } 
      else if (x.equals("quit")) { 
       quit = false; 
      } 
      else { 
       quit = false; 
       System.out.println(x + " is not a palindrome."); 
      } 
     } 
    } 
} 

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

+1

Использование последовательных уровней отступа сделает ваш код более удобным для чтения - к себе, и к другим. –

+0

Как бы я ввел ignoreCase, поэтому, когда пользователь вводит его, он игнорирует регистр – user2059140

+0

@ user2059140: - Вы можете использовать метод ToUpper() для изменения строки ко всем Caps. Обновлено в моем ответе. !! –

ответ

1

Просто оберните другим во время цикла.

Посмотрите в продолжают и перерыв заявления. Они очень полезны для циклов, вот что вы ищете здесь. класса RecursivePalindromeTester общественного {

public static void main(String[] args) { 
     RecursivePalindrome Pal = new RecursivePalindrome(); 

     Scanner in = new Scanner(System.in); 
     while(true){ 
      System.out.print("Enter a word to test whether it is a palindrome or not(press quit to end.): "); 
      String x = in.nextLine(); 
       boolean itsPal = Pal.isPal(x); 
       if(itsPal == true){ 
        System.out.println(x + " is a palindrome."); 
       } else if (x.equals("quit")) { 
        break; 
       } else { 
        System.out.println(x + " is not a palindrome."); 
       } 
     } 
    } 
} 
3

Просто переместите линии просящие пользовательского ввода и чтения его:

System.out.print("Enter a word to test whether it is a palindrome or not(press quit to end.): "); 
String x = in.nextLine(); 

... в ваш цикл, например, сразу после ... линии

while (quit) { 

.


Side Примечание: quit кажется странным именем для булева, который, когда true, означает, что вы продолжать идти. :-)

+0

Да, но если я верю, результат будет повторяться, но мне нужно каждый раз повторять вопрос и давать результат каждый раз. – user2059140

+0

@ user2059140: Это то, что приведет к перемещению этих линий в петлю. Я уточнил, какие строки я говорил, и куда их переместить. –

+0

Я сделал но одно и то же. Как только я нажимаю на один вход, и программа показывает один результат, и это заканчивается. – user2059140

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