Как определить отправную точку в условии?

Эта проблема:

Я хочу, чтобы все числа от 1 до 50 не делились на 7, но также не содержали 7, например, 17,27 и т. Д. Код ниже работает, но (i-10)%7 должен начать с i=6, Теперь он думает, что число 3 не считается причиной (3-10)=-7 то есть 0 мод 7. как мне решить это в операторе if?

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

5 ответов

Решение

Ваше второе условие неверно. 27 заканчивается 7, но (27-10)%7!=0.

Вам просто нужно проверить, что я% 10 не 7.

if(i%7!=0 && i%10!=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".

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

Это кажется основным:

найти, имеет ли число 7 или нет: число%10==7 найти, делится ли число на 7 или нет: число%7==0

объединить оба в предложении Or, если (число%10==7|| число%7==0) делать что угодно.......

но это применимо только если число<50

Если вы проверяете, содержит ли каждое число 7 вместо '(i-10)%7!=0', я бы порекомендовал привести i к строке (i + ""), а затем проверить, содержит ли оно символ 7

используя только i%10!=7 только проверим, не является ли последняя цифра 7.

Другие вопросы по тегам