-2

У меня есть код, сначала я ввожу массив с двух слов, потом в методе wypisz я выписываю
массив и + перевожу его в строку символов чтобы легче было сравнивать на палиндром, дальше
в методе wypiszOdKonca я делать все тоже самое что и в методе выше, но с конца вывожу
массив + тоже перевожу его в строку символов. Потом в методе czyPalindrom я с помощью
функции equals сравниваю строку символов нормально выведенную + строку символов
выведенную с конца, и если они совпадают то хочу вернуть true. Сейчас даже когда они
у меня одинаковые то я получаю false, не понимаю почему так.

    public static void main(String[] args) {
        Tablica tablica = new Tablica(2);
        tablica.do_tablicy();
        tablica.wypisz();
        System.out.print("\n");
        tablica.wypiszOdKonca();
        System.out.print("\n" + tablica.czyPalindrom());
    }
public class Tablica {
    private int liczbaElementow;
    private String[] tablica;
private String resultOdPoczatku = "";
private String resultOdKonca = "";
private char[] charArrayOdPoczatku;
private char[] charArrayOdKonca;

public Tablica(int liczbaElementow) {
    this.liczbaElementow = liczbaElementow;
    tablica = new String[liczbaElementow];
}

public void do_tablicy() {
    Scanner scanner = new Scanner(System.in);
    for (int i = 0; i < tablica.length; i++)
        tablica[i] = scanner.nextLine();
}

public void wypisz() {
    for (String x : tablica) {
        System.out.print(x + "\t");
        resultOdPoczatku = resultOdPoczatku + x;
    }

    charArrayOdKonca = resultOdPoczatku.toCharArray();
    System.out.print(charArrayOdKonca);
}

public void wypiszOdKonca() {
    for (int i = tablica.length - 1; i >= 0; i--) {
        System.out.print(tablica[i] + "\t");
        resultOdKonca = resultOdKonca + tablica[i];
    }

    charArrayOdPoczatku = resultOdKonca.toCharArray();
    System.out.print(charArrayOdPoczatku);
}

public boolean czyPalindrom() {
    System.out.print("\n");
    System.out.print(charArrayOdPoczatku);
    System.out.print("\n");
    System.out.print(charArrayOdKonca);

    return charArrayOdPoczatku.equals(charArrayOdKonca);
}

}

qqq
  • 45
  • 1
  • "даже когда они у меня одинаковые то я получаю false" - значит разные –  Jul 02 '21 at 18:46
  • @Igor я всегда получаю false – qqq Jul 02 '21 at 18:54
  • Вы неправильно используете .equals, здесь сравнивается совсем не то. – Эникейщик Jul 02 '21 at 18:58
  • @VladyslavVerong Значит Ваши массивы - разные. –  Jul 02 '21 at 18:59
  • @Igor но предварительно я вывожу то что сравниваю, и даже когда оно идентично то все равно возвращает false – qqq Jul 02 '21 at 19:04
  • @VladyslavVerong Вы можете меня сколько угодно уговаривать. Я Вам не верю. –  Jul 02 '21 at 19:06
  • @ахахахахахахаха) – qqq Jul 02 '21 at 19:07
  • https://stackoverflow.com/a/8777266/6104996 .......... используй Arrays.equals(array1, array2); – Алексей Шиманский Jul 02 '21 at 19:14
  • 1
    @АлексейШиманский я задал вопрос на русской версии сайта, если вы не знаете как помочь, то не стоит писать комментарии на различные темы, мы здесь обсуждаем мою проблему, советую ознакомится с - (https://ru.stackoverflow.com/help/privileges/comment) – qqq Jul 02 '21 at 19:28
  • @VladyslavVerong То есть ты считаешь, что обсуждение верю-не верю - уместно, а сообщение чтобы ты использовал для сравнения Arrays.equals(array1, array2); - не уместным и не является тем, что поможет? Мда...)) Логике тебе не занимать – Алексей Шиманский Jul 02 '21 at 19:34
  • @АлексейШиманский Не будем перекладывать с больной головы на здоровую. Вы можете честно признаться, что не знаете, как помочь? –  Jul 02 '21 at 19:36
  • @АлексейШиманский так же рекомендую ознакомится с манерами общения в чате с другими участниками – qqq Jul 02 '21 at 19:40
  • @VladyslavVerong рекомендую ознакомится с понятием "чат" и где конкретно сейчас пишутся сообщения :)) – Алексей Шиманский Jul 02 '21 at 19:46
  • @АлексейШиманский рекомендую вам научиться признавать поражения – qqq Jul 02 '21 at 19:47
  • @VladyslavVerong а что, сейчас какая-то битва происходит? О_о – Алексей Шиманский Jul 02 '21 at 19:48
  • 1
    "Но пораженья от победы ты сам не должен отличать." Пастернак –  Jul 02 '21 at 19:51
  • 1
    @АлексейШиманский примечательно, что комментарии в стиле "если не знаете, то не надо писать" или даже рекомендации научиться признавать поражения (щито???) пишут всегда именно те люди, которые не в состоянии решить элементарнейшую проблему даже после того, как им прямым текстом написали, как ее решить. Хрестоматийный пример эффекта Даннинга-Крюгера. – Эникейщик Jul 02 '21 at 20:33

1 Answers1

1

В java проверка строки на палиндром легче всего осуществляется с помощью класса StringBuilder. допустим есть строка "abcba"

String str = "abcba";

Тогда условие проверки будет:

str.equals(new StringBuilder(str).reverse().toString());
Sergey Zh.
  • 1,311