-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をテストしようとしています。代わりに、 のコピーに基づいて計算する必要があります。undoReversenumber

于 2013-07-26T18:08:48.500 に答える