我的程序应该打印出可以被自己的数字整除的所有三位数字,例如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();
}
}
答案 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 {
}
}
}