Не выходит сделать задачу
Нужно сделать задачу которая выводит 100 шаттлов за иключением тех в которых есть числа 4 , 9 У меня она выводит начиная с 00 до 88 , а мне нужно чтобы было 1 - 156 тех что в исключении
public static void main(String[] args) {
// 4 9 - unlucky
// 4, 9 , 14, 19, 24, 29 , 34 , 39, 40-49 , 54, 59 , 64 , 69 , 74 , 79 , 84 , 89 , 90 - 99 (exception)
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
if (i != 4 && j != 4)
System.out.println(i + "" + j);
}
}
}
Ответы (2 шт):
Метод, который проверяет, есть ли какая-то цифра в числе:
static boolean isDigitPresent(int x, int d) {
while (x > 0) {
if (x % 10 == d)
break;
x = x / 10;
}
return (x > 0);
}
Теперь достаточно сделать цикл от 1 до N и на каждой итерации вызывать этот метод и либо делать continue; в цикле, либо вывод. Либо взять заранее большое число N, либо сделать цикл бесконечным.
Чтобы понять, что количество выведеных данных 100 - надо завести переменную счётчик, которая также внутри первого цикла увеличивается на 1. Если на очердной итерации она равна 100, то тогда делаем break;, то есть выход из цикла
Я бы такъ сдѣлалъ.
import java.util.LinkedList;
import java.util.Queue;
class Solution
{
public static void main(String[] args)
{
Queue<Integer> q = new LinkedList<Integer>();
for (int d = 1; d < 9; d = d == 3 ? 5 : d + 1) {
q.add(d);
}
for (int i = 100; i != 0; --i) {
int n = q.remove();
System.out.println(n);
for (int d = 0; d < 9; d = d == 3 ? 5 : d + 1) {
q.add(n * 10 + d);
}
}
}
}
Вы уверены, что послѣднее число должно быть 156? У меня получилось 155.