如果您在控制台中输入的单词是回文或不是Java,则将程序设置为您

Make the program the you if the word you've inputed in the console is a palindrome or not in Java

我一直在努力让这个程序工作,让这个人在控制台上写一个词,然后让控制台有一个输出,说明这个词是不是回文。

package sct;

import java.util.Scanner;

public class Assignment3Problem4 {

    public static void main(String[] args) {

        Scanner reader = new Scanner(System.in);
        System.out.println("Enter a  a string: ");
        String DAWORD = reader.nextLine();

        reader.close();

        int n = DAWORD.length();
        boolean isPalindrome = true;
        for (int i = 0; i < n; ++i) {
            if (DAWORD.charAt(i) != DAWORD.charAt(n - i - 1)) {

                isPalindrome = false;
                break;
            }
            if (isPalindrome)
                System.out.println("This word is a palindrome");
            else
                System.out.println("This word is not a palindrome");
        }
    }
}

遗憾的是,这不起作用,控制台不让我输入字符串,有人可以找出原因并修复代码吗?

for 循环 之后 之前,您不应该打印单词是否为回文。这是我 运行 发布代码的唯一问题。

Scanner reader = new Scanner(System.in);
System.out.println("Enter a  a string: ");
String DAWORD = reader.nextLine();

reader.close();

int n = DAWORD.length();
boolean isPalindrome = true;
for (int i = 0; i < n; ++i) {
    if (DAWORD.charAt(i) != DAWORD.charAt(n - i - 1)) {
        isPalindrome = false;
        break;
    }
}
if (isPalindrome)
    System.out.println("This word is a palindrome");
else
    System.out.println("This word is not a palindrome");

您可能想要删除 reader.close()(因为 关闭 System.in)。

您可以考虑的另一种方法是将您的输入放入一个 StringBuilder 对象中,反转它,然后检查它是否等于您的输入。

类似于:

import java.util.Scanner;

public class Whosebug {
    public static void main(String args[]) {
        Scanner reader = new Scanner(System.in);
        System.out.println("Enter a string: ");
        String DAWORD = reader.nextLine();

        reader.close();

        if (new StringBuilder(DAWORD).reverse().toString().contentEquals(DAWORD))
            System.out.println("This word is a palindrome");
        else
            System.out.println("This word is not a palindrome");
    }
}

结果:

Enter a string: 
racecar
This word is a palindrome

您还可以从此处 https://mvnrepository.com/artifact/org.apache.commons/commons-lang3/3.7 使用外部 apache lang 库。然后你可以使用 StringUtils.reverse() 方法反转字符串,然后将反转的字符串与正常字符串进行比较,如下所示:

import org.apache.commons.lang3.StringUtils;

public class Main4 {

    public static void main(String[] args) {
        String str = "kajak";

        String str2 =StringUtils.reverse(str);
        if (str2.equals(str)){
            System.out.println("It's a palidrom");
        }
        else{
            System.out.println("Not a palidorm");
        }

    }


}