0

我是一名有抱负的 Java 用户,正在上大学课程,但我遇到了问题。我的教授。告诉我们编写一个检测基于 5 位数字的回文的 java 程序。我写了一些东西,但它不会按我计划的方式工作。请问我能得到一些帮助吗?使用 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");
        }
    }
}
4

3 回答 3

11

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

于 2013-03-01T22:46:16.887 回答
0

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

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

这是一些伪代码:

isPalindrome = true;

for i=0 to stringLength

    if(input[i] != input[length - i - 1])
        isPalindrome = false;
于 2013-03-01T22:50:25.820 回答
0

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

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

因此,假设您要检查 a 字符串是否为回文,将其反转并检查它是否与原始字符串相同。

您应该尝试完成此模板:

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类。

于 2013-03-01T23:19:23.637 回答