Palindrome数字在Java中

时间:2017-06-18 11:52:14

标签: java

<h1>

我正在编写一个程序来打印最小回文数(例如:101,232,353,303,424,...)并且大于输入数字(由java.util.Scanner输入)。 但是这个程序没有打印任何东西。

你能帮我解决一下吗?

1 个答案:

答案 0 :(得分:2)

您的numCheck应该最终等于当前i的原始值,以使i成为回文。

但是,您的停止条件为if (numCheck==num),永远不会成立。

它应该是if (numCheck==i),但也会失败,因为您不会保留i的原始值。

以下作品:

    for (int i = num+1; i>num; i++)
    {
        int numCheck = 0;
        int r;
        int numAfter = i;
        while (true)
        {
            r = numAfter%10;
            numCheck = numCheck*10+r;
            numAfter = (numAfter-r)/10;
            if (numAfter==0)
            {
                break;
            }
        }
        if (numCheck==i)
        {
            System.out.println("Minumum palindrome number that greater than input number: "+i);
            break;
        }
    }

现在i永远不会在内循环中被修改(i = numAfter;被删除),因此您可以在内循环完成后将其值与numCheck进行比较。

顺便说一句,代码可以通过这种方式更具可读性:

    int i = num + 1;
    while (true)
    {
        int numCheck = 0;
        int r;
        int numAfter = i;
        while (numAfter != 0)
        {
            r = numAfter%10;
            numCheck = numCheck*10+r;
            numAfter = (numAfter-r)/10;
        }
        if (numCheck==i)
        {
            System.out.println("Minumum palindrome number that greater than input number: "+i);
            break;
        }
        i++;
    }