Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的for循环在值为200时停止?_Java_Loops_For Loop - Fatal编程技术网

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

Java 为什么我的for循环在值为200时停止?,java,loops,for-loop,Java,Loops,For Loop,我的程序应该打印出所有可以被自己的数字整除的三位数,例如124可以被1、2和4整除,它还应该忽略所有带0的数字,比如120、130、208等等。 如果我尝试在eclipse中编译它,它只会在184处停止,我不知道为什么。 我是一个编码初学者,很抱歉英语不好 public class Teilbarkeitlol { public static void methode() { for (int zahl = 111; zahl <= 999; zahl++) {

我的程序应该打印出所有可以被自己的数字整除的三位数,例如124可以被1、2和4整除,它还应该忽略所有带0的数字,比如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();
    }
}
公共类Teilbarkeitlol{
公共静态无效方法(){
for(int zahl=111;zahl如果(zahl%10==0),则您的条件
if
仅检查最后一位数字是否为
0
。您不会对第二位数字执行该检查(由于for循环的范围,第一位数字永远不能为
0

改变

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

publicstaticvoid方法(){

对于(int-zahl=111;zahl您的代码正在通过零抛出java.lang.arithmetricexception:/by zero,因为您的“应该忽略所有带有0的数字”部分是不正确的。您还可以通过将数字转换为字符串并检查是否符合要求来完成此操作

    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 {

            }

        }
    }
for(int-zahl=111;zahl
在这一行中,当dig1、dig2或dig3变为零时,代码将尝试执行零除操作。这种情况发生在201

201%0
这将产生一个异常,您的代码将在该点停止。(在该点之前,您的代码将通过跳过值除以10来跳过这些除以零的除法:)例如:120130)

解决方案是在执行该操作之前检查dig1、dig2或dig3是否为零

也不需要空白IF和ELSE标记(不是错误的:):


在第二个else块中放置一个println,您将看到循环不会在200处停止。您确定没有收到错误消息吗?一旦它到达201,这将导致被零除。
    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 {

            }

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