Не выходит сделать задачу

Нужно сделать задачу которая выводит 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;, то есть выход из цикла

→ Ссылка
Автор решения: Vadim Tukaev

Я бы такъ сдѣлалъ.

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.

→ Ссылка