Как определить отправную точку в условии?
Эта проблема:
Я хочу, чтобы все числа от 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.