java逢7过,为什么会把1到100都打印出来

java“逢7过”,为什么我这样写会把1到100都打印出来啊,谢谢大家解答

package test;

public class Test16 {
public static void main(String[] args) {
    //逢7过
    int i = 0;
    int tmp = 0;
    for(i=1;i<101;i++){
        //包含七
        tmp = i;
        int a = 0;
        int yu = 0;
        
        while(tmp==0) {
        yu = tmp%10;
        if(yu == 7) {
            a = yu;
            break;
        }
        tmp=tmp/10;
        }
        
        if(i%7 == 0 || a==yu){
            System.out.println(i);
        }
        
    }
    
}
}


按你的代码修改如下


public class Test16 {
    public static void main(String[] args) {
        //逢7过
        int i = 0;
        int tmp = 0;
        for(i=1;i<101;i++){
            //包含七
            tmp = i;
            int a = 0;
            int yu = 0;
            
            while(tmp != 0) {
                yu = tmp % 10;
                if(yu == 7) {
                    a = yu;
                    break;
                }
                tmp = tmp / 10;
            }
            
            if(i%7 == 0 || a==yu){
                System.out.println(i);
            }
            
        }
    
    }
}

这样不简单些


public class Main {
    public static void main(String[] args) {
        for (int i = 1; i <= 100; i++) {
            if (i % 7 == 0 || (i + "").contains("7")) {
                continue;
            }
            System.out.println(i);
        }
    }
}

该回答引用chatgpt:
你的逢7过是啥意思,只打印不包含7的数字吗?

   for (int i = 1; i <= 100; i++) {
                if (i % 10 != 7 && i / 10 != 7) {
                    System.out.println(i);
                }
            }