package com.javarush.test.level13.lesson11.bonus01; /* Сортировка четных чисел из файла 1. Ввести имя файла с консоли. 2. Прочитать из него набор чисел. 3. Вывести на консоль только четные, отсортированные по возрастанию. Пример ввода: 5 8 11 3 2 10 Пример вывода: 2 8 10 */ import java.io.*; import java.util.ArrayList; import java.util.Scanner; public class Solution { public static void main(String[] args) throws IOException { // напишите тут ваш код String fileName = Solution.getFileName(); Integer[] allNumbers = Solution.getNumbers(fileName); Integer [] evenNumbers = Solution.getEvenNumbers(allNumbers); Solution.bubbleSorting(evenNumbers); Solution.printItOut(evenNumbers); } public static String getFileName() throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String fileName = reader.readLine(); return fileName; } //получить массив чисел из файла и записать их в массив public static Integer [] getNumbers (String fileName) throws IOException{ Scanner dataFile = new Scanner(new File(fileName)); ArrayList intData = new ArrayList(); while (dataFile.hasNextLine()){ String line = dataFile.nextLine(); Scanner scanner = new Scanner(line); while(scanner.hasNextInt()){ intData.add(scanner.nextInt()); } scanner.close(); } dataFile.close(); return intData.toArray(new Integer[intData.size()]); } public static Integer [] getEvenNumbers(Integer[] allNumbers) { ArrayList evenNumbers = new ArrayList(); for (Integer i : allNumbers) { if (i%2==0) { evenNumbers.add(i); } } return evenNumbers.toArray(new Integer[evenNumbers.size()]); } public static void bubbleSorting (Integer [] notSortedNumbers) { int j; boolean flag = true; int temp; while (flag) { flag = false; for (j = 0; j < notSortedNumbers.length - 1; j++) { if (notSortedNumbers[j] > notSortedNumbers[j+1]) { temp = notSortedNumbers[j]; notSortedNumbers[j] = notSortedNumbers [j + 1]; notSortedNumbers[j + 1] = temp; flag = true; } } } } public static void printItOut (Integer [] numbersToOutput) { for (int i = 0; i < numbersToOutput.length; i ++) { System.out.println(numbersToOutput[i]); } } }