Поиск палиндромов в массиве

Что касается этого задания, я думаю, что понял правильно, но когда я отправляю его в Интернете, оно не отображается как правильное, хотя я проверил с помощью Eclipse.

Подсказка:

Напишите метод isPalindrome, который принимает в качестве аргумента массив строк и возвращает true, если этот массив является палиндромом (если он читается так же, как вперед, так и назад), и /false, если нет. Например, массив {"альфа", "бета", "гамма", "дельта", "гамма", "бета", "альфа"} является палиндромом, поэтому передача этого массива вашему методу вернет значение true. Массивы с нулем или одним элементом считаются палиндромами.

Мой код:

public static void main(String[] args) {
    String[] input = new String[6]; //{"aay", "bee", "cee", "cee", "bee", "aay"} Should return true
    input[0] = "aay";
    input[1] = "bee";
    input[2] = "cee";
    input[3] = "cee";
    input[4] = "bee";
    input[5] = "aay";

    System.out.println(isPalindrome(input));
}

public static boolean isPalindrome(String[] input) {
    for (int i=0; i<input.length; i++) { // Checks each element
        if (input[i] != input[input.length-1-i]){
            return false; // If a single instance of non-symmetry
        }
    }
    return true; // If symmetrical, only one element, or zero elements
}

Например, {"aay", "bee", "cee", "cee", "bee", "aay"} возвращает true в Eclipse, но попрактикуйтесь! говорит, что возвращает ложь. Что происходит?


person Jack L.    schedule 29.05.2014    source источник
comment
Кстати, ваш цикл for может выполнять цикл только от 0 до input.length/2 (включительно).   -  person Kaarel Nummert    schedule 29.05.2014


Ответы (2)


Вы не можете использовать оператор == или != для сравнения строкового объекта. Операторы будут работать со ссылками на объекты, а не со значениями.

public static boolean isPalindrome(String[] input) {
        for (int i=0; i<input.length; i++) { // Checks each element
            if (!input[i].equals( input[input.length-1-i])){
                return false; // If a single instance of non-symmetry
            }
        }
        return true; // If symmetrical, only one element, or zero elements
}
person Hussein Zawawi    schedule 29.05.2014
comment
Не забудьте отметить правильный ответ, если он решил вашу проблему. - person Hussein Zawawi; 29.05.2014

Это не то, как вы сравниваете строки в Java. Используйте следующее:

if (!input[i].equals(input[input.length-1-i])){
        return false; // If a single instance of non-symmetry
    }

Прочтите это.

person Abdul Fatir    schedule 29.05.2014