Palindrome Checker с вложенными циклами, который проверяет ввод, а затем переворачивает его для сравнения - PullRequest
0 голосов
/ 22 декабря 2018

Я застрял на этом, мне нужен код, который использует 2 вложенных цикла для этого назначения (есть и другие решения, но мне нужно продемонстрировать свое понимание вложенных циклов).Но я просто не понимаю.Внешний цикл повторяет весь алгоритм, а внутренний цикл перебирает половину (или меньше) строки.Я не уверен в том, что мне нужно поместить в петли for.Это то, что я до сих пор.Любая помощь будет удовлетворена.

import java.util.Scanner;
public class pali 
{
public static void main(String[] args) 
{
    String line;
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a String to check if it's a Palindrome");
    line = input.nextLine();

    String x = 0;
    String y = input.length-1;

    for (String i = 0; i < line.length-1; i ++){
        for (String j = 0; j < line.length-1; j ++){

            if (input.charAt(x) == input.charAt(y)) 
            {
                x++;
                y--;
            }      
        }
     }
 }

Пример вывода:

Enter a string: 1331

1331 is a palindrome.

Enter a string: racecar

racecar is a palindrome.

Enter a string: blue

blue is NOT a palindrome.

Enter a string:

Empty line read - Goodbye!

Ответы [ 3 ]

0 голосов
/ 22 декабря 2018

Ваш алгоритм некорректен, ваш вложенный цикл должен запрашивать ввод, а не проверять, является ли ввод палиндромом (для которого требуется один цикл).Кроме того, x и y, по-видимому, используются как int (s) - но вы объявили их как String (и на самом деле они вам не нужны).Во-первых, проверка палиндрома должна сравнивать смещение символов от индекса в начале и конце ввода до половины пути (поскольку смещения затем пересекаются).Далее, бесконечный цикл легко читается и легко прерывается при пустом вводе.Что-то вроде

Scanner input = new Scanner(System.in);
while (true) {
    System.out.print("Enter a string: ");
    System.out.flush();
    String line = input.nextLine();
    if (line.isEmpty()) {
        break;
    }
    boolean isPalindrome = true;
    for (int i = 0; i * 2 < line.length(); i++) {
        if (line.charAt(i) != line.charAt(line.length() - i - 1)) {
            isPalindrome = false;
            break;
        }
    }
    if (isPalindrome) {
        System.out.printf("%s is a palindrome.%n", line);
    } else {
        System.out.printf("%s is NOT a palindrome.%n", line);
    }
}
System.out.println("Empty line read - Goodbye!");
0 голосов
/ 22 декабря 2018
        import java.util.Scanner;
public class pali 
{
public static void main(String[] args) 
{
    String line;
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a String to check if it's a Palindrome");
    line = input.nextLine();

    String reversedText ="";
    for(int i=line.length()-1/* takes index into account */;i>=0;i++) {
        reversedText+=line.split("")[i]; //adds the character to reversedText
    }

    if(reversedText ==line){
        //is a palidrome
    }

 }
0 голосов
/ 22 декабря 2018

В вашем коде было много ошибок.Я исправил их и использовал цикл while, чтобы проверить, палиндром это или нет.Пожалуйста, обратитесь ниже код,

import java.util.Scanner;

public class Post {
    public static void main(String[] args) {
        String line;
        boolean isPalindrome = true;
        Scanner input = new Scanner(System.in);
        while (true) {
            System.out.println("Enter a String to check if it's a Palindrome");
            line = input.nextLine();



            int x = 0;
            int y = line.length() - 1;

            while (y > x) {
                if (line.charAt(x++) != line.charAt(y--)) {
                    isPalindrome = false;
                    break;
                }
            }
            if (isPalindrome) {
                System.out.println(line + " is a palindrome");
            } else {
                System.out.println(line + "is NOT a palindrome");
            }
            System.out.println();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...