<h1>
我正在编写一个程序来打印最小回文数(例如:101,232,353,303,424,...)并且大于输入数字(由java.util.Scanner输入)。 但是这个程序没有打印任何东西。
你能帮我解决一下吗?
答案 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++;
}