Учитель задал задание вывести отсчет билетов номерами с 200000 до 210000 и 220000 до 235000. Я написал двумя способами for и while. Метод for:

Цикл for:

public class main
{
    public static void main(String[] args)
    {
        for(int i=200000;i<=210000;i++)
        {
            System.out.println(i);
        }
        for (int j=210000;j<=230000;j++)
        {
            System.out.println(j);
        }
    }
}

Цикл while:


public class wihle
{
    public static void main(String[] args)
    {
        int i=200000;
        int j=220000;

        while (i<=210000 )
        {
            System.out.println(i);
            i++;
        }

        while (j <= 235000)
        {
            System.out.println(j);
            j++;
        }
    }
}

Нужно что код был написан одним циклом и наименьшим кол-во интеграций

Значит ли это, что я должен совместить оба кода при одном использовании for?

Если кто-то напишет, как это сделать, буду очень благодарен.


Ответы (4 шт):

Автор решения: MBo

Просто идея - когда в цикле вы обнаруживаете, что дошли до последнего значения первого поддиапазона ,то выполняйте не i++, а присваивайте счётчику начальное значение второго поддиапазона

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

Если порядок вывода не оговорен, то можно так

for (int i = 200000; i <= 235000; i++) {
    if (i <=210000) {
        System.out.println(i);
        System.out.println(i + 20000);
    }
    if (i >= 220000) {
        System.out.println(i);
    }
    if (i === 210000) {
        i = 230000;
    }
}

Если вывод должен быть строго по порядку, то вот так

for (int i = 200000; i <= 235000; i++) {
    console.log(i)
    if (i === 210000) {
        i = 219999;
    }
}
→ Ссылка
Автор решения: Upiter 1401
public class Main {
 public static void main(String[] args) {
     int num1 =200000, num2 = 210000;
     while(num1<=num2) {
        System.out.println(num1);
        num1++;
        if(num1>num2 && num1 !=  235001) {
            num1 = 220000;
            num2 = 235000;
        }}
    }}
→ Ссылка
Автор решения: Vadik

Всего нужно распечатать 25 000 чисел, это можно сделать за 5 000 итераций, распечатывая в каждой итерации по 5 чисел:

int a = 200_000;
int b = 220_000;
for (int i = 0; i < 5_000; i++) {
    System.out.println(a + 2 * i);
    System.out.println(a + 2 * i + 1);
    System.out.println(b + 3 * i);
    System.out.println(b + 3 * i + 1);
    System.out.println(b + 3 * i + 2);
}
→ Ссылка