-2

我有一个方法可以检查从另一个方法读入的 int 并将其与其反向进行比较。如果数字相等并因此是回文,则返回 true。但是,无论输入的数字是否为回文,false 都会不断返回。

public class Paladin
{
    public static void main()
    {
        boolean valid;

        String inputString = JOptionPane.showInputDialog("Enter a number to be reversed:   ");
        int inputInt = Integer.parseInt(inputString);

        valid = isPalindrome(Reverse(inputInt));

        if(valid)
            JOptionPane.showMessageDialog(null, inputInt + " is a palindrome");

        else
            JOptionPane.showMessageDialog(null, inputInt + " is not a palindrome");

        public static  boolean isPalindrome (int number)
        {
            int undoReverse = 0;

            while(number > 0)  
            {
                undoReverse = undoReverse * 10 + number % 10;
                number /= 10; 
            }

            if(number == undoReverse)
                return true;

            else 
                return false;
        }
    }
}
4

2 回答 2

1

发生这种情况是因为您正在修改方法中的输入numberisPalindrome如下所述:

    number /= 10; 

因此你的

if(number == undoReverse)

比较不会发生在输入数字上,而是发生在修改后的数字上。您基本上需要保留此原始数字以进行比较并使用不同的变量。尝试这个:

 public static  boolean isPalindrome (int number)
        {
            int undoReverse = 0;
            int inputNumber = number;

            while(number > 0)  
            {
                undoReverse = undoReverse * 10 + number % 10;
                number /= 10; 
            }

            if(inputNumber == undoReverse)
                   return true;

            else 
                return false;
            }
}
于 2013-07-26T18:08:56.620 回答
0

您的while循环何时结束number <= 0,但随后您测试 if number == undoReverse。您正在修改number,然后尝试测试修改后的值是否相等。相反,您应该undoReverse根据.number

于 2013-07-26T18:08:48.500 回答