用于标识回文数的Java项目正在返回false和匹配的输出

用于标识回文数的Java项目正在返回false和匹配的输出,java,Java,我已经学习编程三周了,这是我第一次学习堆栈溢出。我遇到了一个关于课程项目的问题。如果是回文,我要取一个数字并返回true。如果输入的数字是偶数,则while循环会正确地将该数字标识为回文或非回文。如果我插入的数字的位数为奇数,那么循环会输出一个与输入匹配的数字,但会向方法返回false。我移动了一些东西,尝试改变while循环的需求,但结果不一,但无法解决这个问题。我可以访问其他学生完成的代码来更改我的代码并完成项目,但我想理解我不理解的内容 公共班机{ public static void m

我已经学习编程三周了,这是我第一次学习堆栈溢出。我遇到了一个关于课程项目的问题。如果是回文,我要取一个数字并返回true。如果输入的数字是偶数,则while循环会正确地将该数字标识为回文或非回文。如果我插入的数字的位数为奇数,那么循环会输出一个与输入匹配的数字,但会向方法返回false。我移动了一些东西,尝试改变while循环的需求,但结果不一,但无法解决这个问题。我可以访问其他学生完成的代码来更改我的代码并完成项目,但我想理解我不理解的内容

公共班机{

public static void main ( String [] args ) {
    System.out.println ( isPalindrome ( 111 ) ) ;
}

public static boolean isPalindrome ( int number ) {

    int lastDigit = 0 ;
    int reverseNumber = 0 ;

    while ( number != 0 ) {
        lastDigit = ( number % 10 ) ;
        reverseNumber = reverseNumber * 10 + lastDigit ;
        number /= 10 ;
        System.out.println ( reverseNumber ) ;
        if ( reverseNumber == number ) {
            return true ;
        }
    }
    return false ;
}
}

我正在打印变量“ReverseEnumber”,以查看输出是否与输入匹配。我也不懂数组或任何数学知识。所以我正在寻找一些简单的帮助。谢谢你帮我解决了我公认的可怜问题

public static void main ( String [] args ) {
    System.out.println ( isPalindrome ( 111 ) ) ;
}

public static boolean isPalindrome ( int number ) {

    int lastDigit = 0 ;
    int reverseNumber = 0 ;
    int num = number;

    while ( num != 0 ) {
        lastDigit = ( num % 10 ) ;
        reverseNumber = reverseNumber * 10 + lastDigit ;
        num /= 10 ;
        System.out.println ( reverseNumber ) ;
        if ( reverseNumber == number ) {
            return true ;
        }
    }
    return false ;
}

您每次都在更改数字,最后将其与反转值(111==0)进行比较,只需将原始值存储在一些临时变量中即可。例如num.

如果数字为奇数,ReverseEnumber将永远不会等于该数字。您真的应该在这方面使用调试器,或者用钢笔和纸把这段代码通读一遍,看看为什么这个算法对奇数位数不起作用。BlueJ有一个简单的调试器,它是免费的。NomadMaker,我还没有真正开始使用调试器或类似的东西。我在eclipse中编写代码,我知道那里有一个可用的调试器。当你说BlueJ有一个简单的调试器时,你的意思是新用户更容易理解,还是在我选择的IDE中运行调试器会更好?如果有调试器,我会先在eclipse中尝试。网上有很多关于如何使用它的教程。很好,谢谢。这可能是开始更有效地解决我自己问题的最佳方式。我很感激你的建议。他这样做是为了检查回文,但对于奇数位数的数字,检查失败。检查无效,对任何数字都无效,因为最后
number
将变为0,而
reverseEnumber
将变为相反。因此,
reverseEnumber==number
将始终是时尚的。您不应该更改
reverseNumber==number
的值,为此,请使用一个临时变量,如
int num=number
,并使用它。对于具有偶数位数的回文数,它是相等的。这是一个家庭作业问题,所以我一直在努力避免回答这个问题。所以我想确保我明白为什么这会导致我的问题。我的输出与输入相同,但这只是因为我是从while循环内部打印的。当程序跳出while循环时,我将数字与零进行比较,因此返回false。但是,如果我输入的数字是偶数,它为什么会起作用呢?这是我最困惑的部分。这些数字返回真值只是侥幸吗?对于偶数数字…当反转数字时,会出现一个点,它将数字精确地分成两半。例如,如果数字是1111,那么经过2次迭代后,反转将是11,数字将是11。因此它返回真值。