java - 尽管有正确的 boolean 值,代码也不会打印

标签 java printing numbers boolean

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

我在纸上算了一下,应该是 9837,但是我的 java 代码无法打印,有人可以帮忙吗?

public class Batman {

public static void main(String[] args) {
    boolean isFourDifferent = false;
    boolean isThousand3TimesTens = false;
    boolean isOdd = false;
    boolean is27 = false;

     for (int number = 0; number < 10000; number++) {
        int d0 = number % 10; number /=10;
        int d1 = number % 10; number /=10;
        int d2 = number % 10; number /=10;
        int d3 = number;

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


}


}
}

最佳答案

您的代码有 2 个问题:

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

  2. 您不会在每个循环中将 boolean 值设置回 false。将声明/初始化移至 for 循环的顶部。

经过上述更改,代码如下所示:

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

关于java - 尽管有正确的 boolean 值,代码也不会打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49636518/

相关文章:

java - 记录java中排序算法比较的元素

java - 数组索引越界 Java 生命游戏?

printing - 从网页将条形码打印到Zebra打印机

打印时选择标记中的 CSS 隐藏下拉箭头

c++ - 为什么 C++ 中 char 不被视为数字?

java - hamcrest:如何匹配数组是另一个数组的子集?

java - 如何创建现有类的新实例?

javascript - PDFKit Node.js 测量单位

javascript - 如何对混合格式的数字(89、900、1k、1.5k、15.2k)进行排序

android - 字符串值的 java.lang.NumberFormatException