2015-07-01 3 views
0

Это задание, которое я выполняю, и кажется, что я не могу заставить его работать правильно.Код Palindrome не работает хорошо в Java

Вопрос ниже.

Палиндром является слово или фраза, которая читается одинаково вперед и назад , игнорируя пробелы и с учетом прописных и строчных версии одного и того же письма, чтобы быть equal.for пример, следующие палиндромов:

  1. бородавок н соломы
  2. радиолокационные
  3. способные я был прежде чем я увидел Elba
  4. xyzczyx

Напишите программу, которая будет принимать последовательность символов прекращается периодом и решить, является ли строка - без периода --- является palindrome.You можно предположить, что вход содержит только буквы и пробелы и длиной не более 80 символов. Включите цикл , который позволяет пользователю проверять дополнительные строки до тех пор, пока он или она не отправит .

Подсказка: Определить статический метод isPalindrome, который начинается, как следующим образом:

Предпосылка: Массив А содержит буквы и пробелы в позициях a[0] через a[used - 1]. Возвращает true, если строка является палиндром и false в противном случае.

public static boolean isPalindrome(char[] a, int used)

Ваша программа должна читать входные символы в массив, базовый тип CHAR, а затем вызвать предыдущий метод. Используемая переменная int отслеживает, сколько из массива используется, как описано в разделе , озаглавленном «Частично заполненные массивы».

Это мой класс код:

public class Palindrome_class 
{ 
// instance variable 
char[] characterArray; 

//constructor 
//@param data is a string of characters 
public Palindrome_class(String data) 
{ 
    characterArray = data.toUpperCase().toCharArray(); 
} 

//@return true if the word is a palindrome, otherwise returns false. 
public boolean isPalindrome(char[] a, int used) 
{ 
    int i = 0, j = used - 1; 

    while (i < j) 
    { 
     if(characterArray[i] == characterArray[j]) 
     { 
      i++; 
      j--; 
     } 
     else 
     { 
      return false; 
     } 
    } 
    return true; 
    } 
} 

Это мой основной код:

import java.util.Scanner; 



public class palindromeTest 
{ 
public static void main(String[] args) 
{ 
    int used = 0; 
    char[] chars = new char[80]; 
    Scanner inputWord = new Scanner(System.in); 
    Scanner reply = new Scanner(System.in); 
    System.out.println("Enter a string characters, terminated by a period."); 

    String data; 
    String cq; 
    Palindrome_class word; 

    do 
    { 
    //input word from user. 
     data = inputWord.nextLine(); 
     word = new Palindrome_class(data); 

    //check for palindrome. 
     if(word.isPalindrome(chars, used)) 
     System.out.println(data + " is a palindrome."); 

     else 
     System.out.println(data + " is not a palindrome."); 

    //request to continue or quit. 
     System.out.println("Continue or Quit?"); 
     cq = reply.nextLine(); 
    } 
    while (cq.equalsIgnoreCase("continue")); 

    System.exit(0); 
    } 
} 

Это результаты:

Введите строку символов, прекращенные периодом ,

радар.

радар. является палиндром.

Продолжить или выйти?

продолжают

использование

использование палиндром.

Продолжить или выйти?

продолжать

использование.

использование. является палиндром.

Продолжить или выйти?

продолжать

яблоко.

яблоко. является палиндром.

Продолжить или выйти?

Бросить

Пожалуйста, скажите мне, где я делаю ошибку.

ответ

3

Вы проверяете ли строка палиндромом с этим вызовом:

if(word.isPalindrome(chars, used)) 

Однако used является 0, так что ваш метод всегда возвращает истину.

Вы также игнорируете инструкции по назначению. Вы ничего не делаете с массивом chars, вы не удаляете период, который должен находиться в конце строки ввода, ваш метод isPalindrome не является статическим и т. Д.

+0

'chars' также никогда не назначается и в самом деле' обугливается [] a' никогда не используется в 'isPalindrome()'. – Rossiar

0

U сделал очень небольшую ошибку. U посылает «использованную» переменную как 0 каждый раз. в идеале это должна быть длина слова. обязательно проверьте. использовать

used = data.length(); 

перед отправкой его в метод проверки

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