回文数字由两个3位数字的乘积组成

时间:2016-02-24 11:49:09

标签: java

我一直在尝试用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);

           }

        }}}}

任何帮助???

3 个答案:

答案 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); 

            }

        }