返回false的相等整数

时间:2013-07-26 18:07:39

标签: java comparison int equals

我有一个方法从另一个方法检查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;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

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

    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;
            }
}

答案 1 :(得分:0)

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