Palindrome for Integers and Strings Java

时间:2016-02-13 21:37:27

标签: java palindrome

我正在尝试使用Java为Integers和Strings创建Palindrome应用程序,我的if语句出现问题,它输出错误/重复的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!");
        }

    }
}

2 个答案:

答案 0 :(得分:0)

由于您使用循环检查整个字符串,因此您不希望立即输出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);

答案 1 :(得分:0)

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

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