我一直在尝试用Java创建一个程序来打印由两个3位数字的乘积组成的所有Palindrome数字。但不知何故,该计划没有提供任何输出。这是我的代码:
public class Lessons {
public static void main(String[] args) {
int a;
int b;
int c;
int r;
for (a=100; a<1000;a++)
{
for (b=100; b<1000; b++)
{
c= a*b;
int l;
r=0;
while (c>0){
l = c%10;
r = r*10+l;
c = c/10;
}
if (r==c)
{
System.out.println("The Palindrome number are:");
System.out.println(r);
}
}}}}
任何帮助???
答案 0 :(得分:1)
您必须将c
存储到另一个变量中,因为您要在while
循环中更改它。或者,改变
if (r==c)
到
if (r==a*b)
但效率较低,因为在这种情况下,每次乘法都会执行两次。
顺便说一句,应该进行的优化是将第二个for
循环更改为:
for (b=a; b<1000; b++) { .. }
这样您就可以避免两次计算每种产品。
答案 1 :(得分:0)
乍一看,我所看到的一件事就是你将c / 10除以大于0,但由于c是一个int,它最后一次被分割,最后它将为0循环的结果,因为r在循环结束时增加,它们永远不会有相同的值,因此你没有得到任何输出。
答案 2 :(得分:0)
int n,i,j;
for(i=100;i<200;i++)
{
for(j=100;j<200;j++)
{
int r,sum=0,temp;
n=i*j;
temp=n;
while(n>0){
r=n%10;
sum=(sum*10)+r;
n=n/10;
}
if(temp==sum)
System.out.println(temp);
}
}