Java говорит, что у этого метода есть имя конструктора - PullRequest
4 голосов
/ 02 марта 2011

Я хочу вернуть значение моего массива плюс возвращаемое значение рекурсивного вызова.

Однако по какой-то причине java не хочет иметь имя метода после конструктора.

Кроме того, когда я пытался преобразовать метод в другой метод, я получаю сообщение об ошибке при использовании isPalindrome.

Я изменяю свою программу, но все равно получаю ошибки.


public class isPalindrome
{
    /**
     * This is the main entry point for the application
     * @return 
     */
    public static boolean main(String[] args) 
    {</p>

    String[] word = {"KayaK", "Desserts, I stressed"};



    boolean isPalindrome(String[] array, String s, String i)
    {

        if(i.charAt(0) == s.charAt(0))
        {
            System.out.println("You entered a Palindrome");
            return true;
        }
        else
        {
            System.out.println("You didn't entered a Palindrome");
        }
    }


        try 
        {
            System.in.read();
        } 
        catch (Throwable t) 
        {

        }
}

}

Ответы [ 4 ]

15 голосов
/ 02 марта 2011

Вы не можете использовать имя класса в качестве имени для метода.Единственные «методы», которые могут делить имя с классом, - это конструкторы.

Одним из исправлений было бы переименование вашего класса с isPalindrome на PalindromeFinder или что-то еще.Это также лучше согласуется с соглашениями об именах Java.

РЕДАКТИРОВАТЬ: Обратите внимание, что вы никогда не вызывали свой метод в main;Вы пытались присвоить локальную переменную isPalindrome.Это на самом деле не вызывает метод.Вам нужно будет вызвать метод с помощью isPalindrome(...put your parameters here...) и сохранить результат в переменной с именем, которое не используется.

Также обратите внимание, что метод может возвращать только одно значение (один примитив илиодин объект).Если вы действительно хотите вернуть массив И логическое значение (и я не уверен, что вы это делаете), вам придется хранить их в объекте и возвращать этот объект.

0 голосов
/ 02 марта 2011

но как мне вернуть мой массив

return isPalindrome(array, s.substring(1, s.length()-1)); - это проблема.

  1. Как написано, на самом деле ничто не создает массив длябыть возвращенным.Подсказка: где находится return new String[]... или return массив`?

  2. Ничто не меняет array, поэтому нет смысла возвращать его.

  3. Вы можете ... если это имеет смысл ... изменить массив, переданный в качестве аргумента.

  4. Если вы действительно хотите вернуть массив из isPalindrome, вы можете't * также вернуть true и false.У метода может быть только один объявленный тип возврата, а вашему коду, похоже, «нужно» два;то есть String[] и boolean.Вы не можете этого сделать.

* ОК, вы можете ... объявив тип возвращаемого значения Object.Но это усложняет жизнь звонящему (и), и это будет очень плохой дизайн.

0 голосов
/ 02 марта 2011

Я бы предложил переименовать класс в Palindrome или PalindromeHelper

0 голосов
/ 02 марта 2011

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

...