Сортировка чисел и вывод их на экран

33
11 января 2017, 00:59
  1. Введи с клавиатуры 20 чисел, сохрани их в список и рассортируй по трём другим спискам: число делится на 3 (x % 3 == 0), делится на 2 (x % 2 == 0) и все остальные. Числа, которые делятся на 3 и на 2 одновременно, например, 6, попадают в оба списка.
  2. Метод printList должен выводить на экран все элементы списка с новой строки.
  3. Используя метод printList, выведи эти три списка на экран. Сначала тот, который для x % 3, потом тот, который для x % 2, потом последний.

Я сделал 1 и 2 пункты. Как сделать 3 пункт?

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader rd = new BufferedReader(new    InputStreamReader(System.in));
        ArrayList<Integer> list3 = new ArrayList<Integer>();
        ArrayList<Integer> list2 = new ArrayList<Integer>();
        ArrayList<Integer> list32 = new ArrayList<Integer>();`
        while(true) {
            String s = rd.readLine();
            if (s.isEmpty())
                break;
            int x = Integer.parseInt(s);
            if (x % 3 == 0) {
                list3.add(x);
                printList(list3);
            } else if (x % 2 == 0) {
                list2.add(x);
                printList(list2);
            } else if ((x % 3 == 0) && (x % 2 == 0)) {
                list32.add(x);
                printList(list32);
            }
        }
    }
    public static void printList(List<Integer> list)
    {
        //напишите тут ваш код
        System.out.println(list);
    }
}
Answer 1

Первый пункт вы сделали неправильно:
1. У вас можно ввести больше или меньше 20 чисел.
2. Число в список list2 добавляет не всегда когда нужно, а в list32 вообще ничего не попадает, да и название у него странное - в задании намёка на такой нет.

По самому коду:
1. Конструкции while (true) стоит избегать.
2. InputStreamReader и BufferedReader нужно закрывать после использования.

В итоге получается как-то так:

public static void main(String[] args)
{
    ArrayList<Integer> list3 = new ArrayList<>();
    ArrayList<Integer> list2 = new ArrayList<>();
    ArrayList<Integer> others = new ArrayList<>();
    try (BufferedReader rd = new BufferedReader(new InputStreamReader(System.in)))
    {
        for (int i = 0; i < 20; i++)
        {
            String line = rd.readLine();
            int number = Integer.parseInt(line);
            if (number % 3 == 0)
            {
                list3.add(number);
            }
            if (number % 2 == 0)
            {
                list2.add(number);
            }
            if (number % 3 != 0 && number % 2 != 0)
            {
                others.add(number);
            }
        }
    }
    catch (IOException e) { }
    printList(list3);
    printList(list2);
    printList(others);
}
public static void printList(List<Integer> list)
{
    System.out.println(list);
}
READ ALSO
Доступ к событиям чужого калентаря

Доступ к событиям чужого калентаря

Необходимо получить список событий чужого Google-календаряПытаюсь сделать так:

22
GridLayout в ScrollView выдает ошибку

GridLayout в ScrollView выдает ошибку

Получил много ошибок, но считаю что основная эта, подскажите пожалуйста, в чем проблема?

28
как спрятать клавиатуру, открытую через showSoftInput

как спрятать клавиатуру, открытую через showSoftInput

в одном из активити открывается клавиатура таким образом:

23
Android поддержка epg

Android поддержка epg

ЗдравстуйтеНеобходимо в программе реализовать возможность просмотра тв программы в epg виде

15