2015-02-09 3 views
-1

я вчера задал вопрос о палиндромах и Java:программа Java Palindrome (1 ошибка)

Java Palindrome Program (am I on track)?

Я сделал некоторый прогресс до сих пор со всей вашей помощью (спасибо еще раз). Мне просто нужно помочь с еще одной задачей, прежде чем я смогу проверить код. Я использую Eclipse, и я получаю сообщение об ошибке в одной строке (я также буду включать ошибку в качестве комментария в коде ниже). Я продолжаю получать «Не могу вызвать charAt (int) для типа массива String []».

Кто-нибудь знает, что здесь происходит? Прошло некоторое время с тех пор, как я использовал Java. Использовал его в C.S. Один около 12 месяцев назад, затем я перешел к C++ в Data Structures, затем Machine Code и Assembly Language в следующем курсе. Вот код (я также включил ошибку в комментарий в коде). Большое спасибо:

public class Palindrome 
{ 

public boolean isPalindrome(String theWord) 
{  
    for (int i = 0; i < theWord.length(); i++) { 
     if (theWord.charAt(i) != theWord.charAt (theWord.length() - i - 1)) { 
      return false; 
     } 
    } 
    return true; 
} 


public static void main(String [] theWord) 
{ 
     int leftPointer = 0; 
     int rightPointer = theWord.length - 1; 

     for (int i = 0; i < theWord.length/2; i++) { 
      while (leftPointer >= rightPointer) { 
       if (theWord.charAt(i) == theWord.charAt (theWord.length - i - 1)) { // Error: Cannot invoke charAt(int) on the array type String[] 
        leftPointer++; 
        rightPointer--; 
       } 
       System.out.println(theWord); 
      } 
     } 
} 

}

+3

Ошибка кажется довольно понятной. 'charAt' - метод String, а не метод массива String. – sprinter

+0

'theWord' - это массив (возможно) нескольких' Strings'. 'charAt' может применяться только к одному' String'. – ajb

+0

Вы имеете в виду 'theWord [i] .charAt' – sprinter

ответ

1

Вы пытаетесь получить доступ к Шара() на String [] (строковый массив аргументов, передаваемых в программу), но вы должны получить к нему доступ на строка. Я мир предлагаю что-то вроде:

if (theWord[i].charAt(0) == theWord[theWord.length - i - 1].charAt (0)) {

Это может помочь вам.

0

charAt (int index) применяется для строки, а не для массива String. Ваша программа хочет решить, является ли строка палиндром, например «abcba». Вместо того, чтобы проверить, все ли массивы строк являются палиндром, не так ли? Например {"abcba", "bbc", "aba"}.

0

В Java (как в C++) программа получила список параметров, который является массивом строк. Таким образом, ваш класс должен выглядеть следующим образом:

public class Palindrome 
{ 
    public static boolean isPalindrome(String theWord) 
    {  
    for (int i = 0; i < theWord.length(); i++) { 
     if (theWord.charAt(i) != theWord.charAt (theWord.length() - i - 1)) { 
     return false; 
     } 
    } 
    return true; 
    } 


    public static void main(String [] args) 
    { 
    String theWord = args[0]; // first word passed to the program 
    boolean isPalindrom = Palindrome.isPalindrome(theWord); 
    System.out.println(theWord + " is" + (isPalindrom ? "" : " NOT ") + " a Palindrome."); 
    } 

} 
+0

Hi Max Zoom. Не могли бы вы объяснить «String theWord = args [0]; boolean isPalindrom = Palindrome.isPalindrome (theWord);" часть кода, особенно «Palindrome.isPalindrome (theWord)». Большое спасибо. –