为什么我的回文不起作用?

时间:2013-03-01 22:43:21

标签: java

我是一个有抱负的java用户参加大学课程,我遇到了一个问题。我的教授。告诉我们编写一个java程序来检测基于5位数的回文。我写了一些东西,但它不会像我计划的那样工作。我能得到一些帮助吗?使用netbeans IDE。

package palindrome;

import javax.swing.JOptionPane;

public class Palindrome {

    public static void main(String[] args) {

        String stringNumber;
        int number;
        String stringPal;
        int palindrome;

        stringNumber = JOptionPane
                .showInputDialog("Please, if you will, enter a five digit palindrome: ");
        number = Integer.parseInt(stringNumber);

        if (number < 10000 && number > 99999) {
            System.out
                    .println("Your number is invalid, please enter a FIVE digit number: ");
        } else if (number % 10 == number % 100) {
            System.out.println("your number: " + number + "is a palindrome");
        } else {
            System.out.println("You FAIL loser");
        }
    }
}

3 个答案:

答案 0 :(得分:11)

你的回文逻辑不正确。您检查除以10时的余数是否等于除以100时的余数 - 当且仅当十位数中有0时才是这种情况。这不是palindrome的定义。

答案 1 :(得分:0)

我不明白,数字%10 ==数字%100,意味着回文,但它所做的只是将最后2位数的值与最后1位数的值进行比较。

我的建议是将输入作为stringchar数组,并将字符串的最后一个元素与第一个元素进行比较,然后继续直到中间

这里有一些psudo代码:

isPalindrome = true;

for i=0 to stringLength

    if(input[i] != input[length - i - 1])
        isPalindrome = false;

答案 2 :(得分:0)

正如已经指出的那样,你的回文逻辑是错误的。

您需要检查的是反转时字符串/数字是否相同。

所以,假设您要检查一个字符串是否为回文结构,将其反转并检查它是否与原始字符串相同。

您应该尝试完成此模板:

boolean isPalindrome(String s){

   String reverseString = reverseString(s);

   if(reverseString.equals(s)){
        return true;
   }

   return false;
}

String reverse(String s){
  //add code to reverse String. (and optionally check if it is Integer, if it is a requirement)
}

您现在可以谷歌如何反转字符串。

PS:你可能想看看StringBuilder班。