代码不会打印尽管适当的布尔值

时间:2018-04-03 18:04:19

标签: java printing numbers boolean

我正在为我的Java类编写代码,我必须找到一个4位数字。它由四个不同的数字组成,千位数是数字的3倍,数字是奇数,所有数字加起来都是27。

我在纸上做了数学计算,应该是9837,但是我的java代码没有打印,有人可以帮忙吗?

HourlyLog

2 个答案:

答案 0 :(得分:3)

您的代码有两个问题:

  1. 您正在每个循环中更改number,以便在循环结束时,无论number是什么,它现在都是单位数。因此,你有一个无限循环。使用另一个初始化为number的变量来计算d0d1d2d3

  2. 您没有将每个循环的布尔值设置回false。将声明/初始化移动到for循环的顶部。

  3. 通过上述更改,代码如下所示:

    for (int number = 0; number < 10000; number++) {
         boolean isFourDifferent = false;
         boolean isThousand3TimesTens = false;
         boolean isOdd = false;
         boolean is27 = false;
    
         int temp = number;
         int d0 = temp % 10; temp /=10;
         int d1 = temp % 10; temp /=10;
         int d2 = temp % 10; temp /=10;
         int d3 = temp;
    
         if ((d0 != d1) && (d0 != d2) && (d0 !=d3) &&
                 (d1 != d2) && (d1 != d3) && 
                 (d2 != d3))
             isFourDifferent = true;
    
         if (d3 == (3 * d1))
             isThousand3TimesTens = true;
    
         if (d0 % 2 != 0)
             isOdd = true;
    
         if ((d0 + d1 + d2 + d3) == 27)
             is27 = true;
    
         if(isFourDifferent  && isThousand3TimesTens && isOdd && is27)
             System.out.println("Found" + number);
     }
    

    输出:

    Found9837
    

答案 1 :(得分:0)

您实际上是将number /=10;除以for循环的变量。

你可以做的是:

int inti=number;
inti/=10;
int d3 = inti%10;
inti/=10;
int d1 = inti%10;