带有嵌套循环的回文检查器,用于检查输入,然后翻转输入进行比较



我坚持这一点,我需要一段使用 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!

你的算法是有缺陷的,你的嵌套循环应该是提示输入 - 而不是检查输入是否是回文(这需要一个循环本身)。此外,xy 似乎用作int - 但您已将它们声明为 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!");
        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
    }
 }

你的代码有很多错误。我已经纠正了它们并使用 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();
        }
    }
}

相关内容

最新更新