为什么我的for循环停止在200的值?

时间:2017-11-21 09:42:11

标签: java loops for-loop

我的程序应该打印出可以被自己的数字整除的所有三位数字,例如124可以被1,2和4整除,它也应该忽略所有数字,如120 130 208等。 如果我尝试在eclipse中编译它只是停在184,我不知道为什么。 我是编码的初学者,对不好的英语抱歉。

public class Teilbarkeitlol {
    public static void methode() {
        for (int zahl = 111; zahl <= 999; zahl++) {
            if (zahl % 10 == 0) {

            } else {
                int dig1 = zahl / 100;
                int dig2 = (zahl % 100) / 10;
                int dig3 = zahl % 10;
                if (zahl % dig1 == 0 && zahl % dig2 == 0 && zahl % dig3 == 0) {
                    System.out.println(zahl);
                } else {}
            }
        }
    }

    public static void main(String[] args) {
        methode();
    }
}

4 个答案:

答案 0 :(得分:1)

您的条件if (zahl % 10 == 0)仅检查最后一位是0。您不会对第二个数字执行该检查(由于for循环的范围,第一个数字永远不会是0

变化

if (zahl % dig1 == 0 && zahl % dig2 == 0 && zahl % dig3 == 0)

if (dig2 != 0 && dig3 != 0 && zahl % dig1 == 0 && zahl % dig2 == 0 && zahl % dig3 == 0)

答案 1 :(得分:1)

if (zahl % dig1 == 0 && zahl % dig2 == 0 && zahl % dig3 == 0) {

在这一行中,当dig1或dig2或dig3变为零时,你的代码试图通过零操作进行除法。这发生在201年。

201%0

这会产生异常,您的代码会在此时停止。 (直到那一点,你的代码通过跳过除以10的值跳过那些除以零的分辨率:) ex:120,130)

在执行该操作之前,将检查dig1或dig2或dig3是否为零。

也不需要空白的if和else标签(也没错:))

else {
}

答案 2 :(得分:0)

public static void methode() {
    for (int zahl = 111; zahl <= 999; zahl++) {
       if (zahl % 10 == 0 || (zahl % 100)/10 == 0 ) {
           continue;
       }

       else {
           int dig1 = zahl / 100;
           int dig2 = (zahl % 100) / 10;
           int dig3 = zahl % 10;
           if (zahl % dig1 == 0 && zahl % dig2 == 0 && zahl % dig3 == 0) {
               System.out.println(zahl);
           }

           else {
                continue;
           }

       }
   }}

试试这个。

答案 3 :(得分:0)

您的代码抛出 java.lang.ArithmeticException:/ by zero ,因为您的“应忽略所有带0的数字”部分不正确。您也可以通过将数字转换为String并检查accourance来实现。

    for (int zahl = 111; zahl <= 999; zahl++) {
        if (!Integer.toString(zahl).contains("0")) {
            int dig1 = zahl / 100;
            int dig2 = (zahl % 100) / 10;
            int dig3 = zahl % 10;
            if (zahl % dig1 == 0 && zahl % dig2 == 0 && zahl % dig3 == 0) {
                System.out.println(zahl);
            } else {

            }

        }
    }