Цепь символов палиндром java

Я пробую делать программу, которую он говорил бы, - палиндром ли принятая в доме фраза или слово, а именно holaloh. Что я делаю звуком два for, что начал обращаться с начала и другой с конца, и после сохранять их с charAt и положением индекса, но он я приносит пользу в каких-то словах и в других не. Не, если есть что-то плохо в коде.

import java.util.Scanner;

public class capicua {
public static void main(String args[]) {
    Scanner teclado = new Scanner(System.in);

    System.out.println("Escriba una cadena.");
    String x = teclado.nextLine();
    int s = x.length();
    int z = s / 2;
    char k;
    char m;

    for (int i = 0; i <= z; i++) {
        for (int j = (s - 1); j>z ; j--) {

            k = x.charAt(i);
            m = x.charAt(j);

            if (k==m) {
                System.out.println("Bien.");
            }

        }
     }
  }
}
3
задан 22.01.2017, 17:38
0 ответов

не является необходимым, который user for укрытый, ты не сравнивал, как это должно бы быть сравнение для этой проблемы, что состоит в том, чтобы сравнивать

первый элемент с последним

второй элемент с предпоследним

третий элемент с третьим с конца и т.д.

твоя ошибка коренится в сравнении: то, что твой код делает:

i=0
сравнивать первый элемент с последним элементом

сравнивать первый элемент с предпоследним элементом

сравнивать первый элемент с третьим с конца элементом...

i=1
сравнивать второй элемент с последним элементом

сравнивать второй элемент с предпоследним элементом

сравнивать второй элемент с третьим с конца элементом...

i=2

сравнивать третий элемент с последним элементом

сравнивать третий элемент с предпоследним элементом

сравнивать третий элемент с третьим с конца элементом... и т.д.

я оставляю тебе решение:

import java.util.Scanner;

public class capicua {
public static void main(String args[]) {
    Scanner teclado = new Scanner(System.in);

    String x = "anitalavalatina";
    int s = x.length();
    int z = s / 2;
    char k;
    char m;
    int p=0;

        for (int j = (s - 1); j>z && p<z ; j--) {

            k = x.charAt(p);
            m = x.charAt(j);

      System.out.println(k+" "+m );   

            if (k==m) {
                System.out.println("Bien.");
            }
          p++;

        }

  }
}
3
ответ дан 03.12.2019, 17:35
  • 1
    Уже entendí большое спасибо из-за ответа! –  22.01.2017, 18:05

Если у тебя нет ограничений, чтобы использовать StringUtils код у тебя будет оставаться гораздо более ограниченным:

String prueba = "prueba";
String aux = StringUtils.reverse(prueba);
System.out.println(String.format("'%s' %s es palíndromo: '%s'", prueba, (prueba.equals(aux)?"SI":"NO"),aux));

prueba = "acurruca";
aux = StringUtils.reverse(prueba);
System.out.println(String.format("'%s' %s es palíndromo: '%s'", prueba, (prueba.equals(aux)?"SI":"NO"),aux));

Он дает нам следующий вывод:

'доказательство' не палиндром: 'abeurp'
'скорчись', ЕСЛИ это палиндром: 'скорчись'

ЗАМЕТЬ: Когда мы имеем в виду слова, используется выражение палиндром, для которого ты ищешь вместо палиндрома, который используется для числительных.

0
ответ дан 03.12.2019, 17:35