整数和字符串的回文 Java

Palindrome for Integers and Strings Java

我正在尝试为 Java 中的整数和字符串创建回文应用程序,我的 if 语句有问题,它输出 incorrect/repeating True 和 False 语句:

import java.util.Scanner;
import java.io.*;

public class Palindrome {
    public static void main(String[] args) {

        Scanner user_input = new Scanner(System.in);

        System.out.println("Enter characters to check for Palindrome: ");



        if ( user_input.hasNextInt() ){
            String intToString = String.valueOf(user_input.nextInt()).toString();
            String reversedInt = new StringBuffer(intToString).reverse().toString();

            for (int i = 0; i<intToString.length(); i++) {
                if (intToString.charAt(i) != reversedInt.charAt(i)) { 
                        System.out.println("False");
                    }

                else {
                        System.out.println("True");
                    }
                }
            }


        else if ( user_input.hasNextLine() ) {
            String user_string = user_input.nextLine().replaceAll(" ", "").toLowerCase();
            StringBuilder user_mutable_string = new StringBuilder(user_string);
            user_mutable_string.reverse();

                if (user_string.equals(user_mutable_string.toString())) {
                    System.out.println("True");
                }

                else {
                    System.out.println("False");
                }   
            }

        else {
            System.out.println("Bonkers!");
        }

    }
}

由于您正在使用循环来检查 整个 字符串,您不想立即输出 True,因为您还不知道观点。可能是下一个字符不会通过条件。 您应该改用布尔变量,例如

boolean isPalindrome = true; // let's assume it will be ok
for (int i = 0; i<intToString.length(); i++) {
  if (intToString.charAt(i) != reversedInt.charAt(i)) { 
    isPalindrome = false;
  }
}
System.out.println(isPalindrome);

您的问题与您不需要的 for 循环有关。您已经反转数字并将原始数字和反转数字都转换为字符串。然后你需要做的就是比较它们。将 for 循环更改为简单的 if:

        if (intToString.equals(reversedInt)) { 
            System.out.println("True");
        }
        else {
            System.out.println("False");
        }