如何在条件中定义起点?

How to define a starting point in the condition?

问题:

我想要 1-50 中所有不能被 7 整除但又没有 7 的数字,例如 17,27 等。下面的代码有效,但 (i-10)%7 必须从 i=6 开始。现在它认为数字 3 不算数,因为 (3-10)=-7 即 0 mod 7. 我如何在 if 语句中解决这个问题?

for(int i=1; i<=50;i++){
    if(i%7!=0 &&  (i-10)%7!=0){
        System.out.println(i);

你的第二个条件是错误的。 27 以 7 结尾,但 (27-10)%7!=0.

你只需要检查 i % 10 不是 7。

if(i%7!=0 && i%10!=7)

如果您要检查每个数字是否包含 7 而不是“(i-10)%7!=0”,我建议将 i 强制转换为字符串 (i + ""),然后检查它是否包含字符 7

仅使用 i%10 !=7 将只检查最后一位数字是否不是 7。

这应该有效。将其转换为字符串并检查它是否包含字符串“7”。

if(i % 7 != 0 && ((String)i).contains("7"))

这样就可以了

for(int i=1; i<=50;i++){
        if(i==7 || i==3)
        {
            if(i==3)
                System.out.println(i);              
        }
        else if(i%7!=0 &&  (i%10)%7!=0){
            System.out.println(i);}
    }

输出是...

1 2 3 4 5 6 8 9 11 12 13 15 16 18 19 22 23 24 25 26 29 31 32 33 34 36 38 39 41 43 44 45 46 48

更新

如果您希望 if 条件从 i=6 开始检查,那么您可以这样做...

for(int i=1; i<=50;i++){            
            if(i>=6 && i%7!=0 &&  (i%10)%7!=0)
            System.out.println(i);          
    }

但是输出将变为...

6 8 9 11 12 13 15 16 18 19 22 23 24 25 26 29 31 32 33 34 36 38 39 41 43 44 45 46 48

看起来很基本:

判断数字是否有7 : number%10==7 判断这个数是否能被 7 整除:number%7==0

在 Or 子句中合并 如果(数字%10==7||数字%7==0) 做任何事......

但仅适用于人数<50