Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/34: Рейтинг темы: голосов - 34, средняя оценка - 4.88
0 / 0 / 1
Регистрация: 12.02.2018
Сообщений: 157

Сортировка четных чисел из файла

27.07.2018, 20:48. Показов 6373. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1. Ввести имя файла с консоли.
2. Прочитать из него набор чисел.
3. Вывести на консоль только четные, отсортированные по возрастанию.

Пример ввода:
5
8
-2
11
3
-5
2
10

Пример вывода:
-2
2
8
10

Требования:
1. Программа должна считывать данные с консоли.
2. Программа должна создавать FileInputStream для введенной с консоли строки.
3. Программа должна выводить данные на экран.
4. Программа должна вывести на экран все четные числа считанные из файла отсортированные по возрастанию.
5. Программа должна закрывать поток чтения из файла(FileInputStream)

Поясните плз.
делал разными способами
делал так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String fileName = reader.readLine();
        BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
       FileInputStream fileInputStream = new FileInputStream(fileName);
       String s;
 
       for (;;){
           s = reader.readLine();
           if (s.isEmpty())break;
 
           writer.write(s );
       }
       writer.flush();
       writer.close();
 
 
       ArrayList<Character> list = new ArrayList<>();
 
       while (fileInputStream.available() > 0){
           int data = fileInputStream.read();
           if ((char)data % 2 == 0) list.add((char)data) ;
       }
       fileInputStream.close();
        Collections.sort(list);
       for (Character li : list){
           System.out.println(li);
       }
 
 
 
    }
}
Вывод некорректный

потом так предварительно создав текстовый файл (f:\t.txt):
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                BufferedReader reader = new BufferedReader(new FileReader(br.readLine()));
                ArrayList<Integer> numbersList = new ArrayList<Integer>();
                String sNumber;
                while ((sNumber = reader.readLine()) != null){
                    int number = Integer.parseInt(sNumber);
                    if (number % 2 == 0){numbersList.add(number);}
                }
 
                Collections.sort(numbersList);
                for (int i:numbersList){System.out.println(i);}
            }
        }
тут кидает исключение
Exception in thread "main" java.lang.NumberFormatException: For input string: "8" // перед 8 непонятный символ у меня в блокноте его нет, показывает только в исключении
at java.lang.NumberFormatException.forInput String(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java: 580)
at java.lang.Integer.parseInt(Integer.java: 615)
at com.javarush.task.task13.task1326.Soluti on.main(Solution.java:23)

Потом просто пытался сделать через FilеInputStreamReader но как оказалось тут while (fileInputStream.available() > 0){
int data = fileInputStream.read(); считываются только байты, а мне нужны числа.
В общем застрял, а задача то простая. Не пойму как происходит чтение из файла. Проясните пожалуйста
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.07.2018, 20:48
Ответы с готовыми решениями:

Сортировка четных чисел вставками
Нужно отсортировать одномерный массив методом вставок по возрастанию. Сортировать необходимо только парные числа, непарные должны...

Сортировка четных чисел по возрастанию
Задание. В класс MyClass поместите функцию int PairValuesArray(int n), которая будет возвращать массив упорядоченных по возрастанию...

Сортировка одномерного массива методом «пузырька», выделение массивов из четных и нечетных чисел. Вычисление суммы нечетных чисел
Program Sortirovka; Uses Crt; Var a:array of integer; i,j,k,n,Sum : integer; BEGIN Repeat Clrscr; Write('Vvedite...

3
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
27.07.2018, 22:51
Files.lines() например
0
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
29.07.2018, 12:59
file.txt
Кликните здесь для просмотра всего текста
file.txt:
1 2 156 4 298 5 555 632 45 4
55
12
555 5 88 992 55 148 3694


Java
1
2
3
4
5
6
public class Main {
    public static void main(String[] args) {
        ReadFile readFile = new ReadFile();
        readFile.zapusc(null);
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.*;
 
public class ReadFile {
    private ArrayList<Integer> list = new ArrayList<Integer>();
 
    private Scanner scanner = new Scanner(System.in);
    private BufferedReader bufer;
 
 
    public void fileWaySearh(String way) { // 3запустился метод
        boolean exit = true;
        if (way.contains("exit")) {   //Если команда ровна exit тогда программа заверится цикл
            System.exit(0);
        } else {
            try {
                bufer = new BufferedReader(new InputStreamReader(new FileInputStream(way), StandardCharsets.UTF_8)); //передаём вфайл в кодировке UTF_8  а то каракули получатся
                System.out.println("Файл найден");
            } catch (FileNotFoundException e) {
                this.fileWaySearh(this.input("файл не найден, повторите попытку ввода, или введите \"exit\", для выхода из программы")); //если ввели фигню метод запустится по новой
            }
        }
    }
 
    public void zapusc(String way) { //1 метод с которого стартут программа
        this.fileWaySearh(input(way));   //2 запускается метод в который передаётся дефолтная команда она будет равно null
        System.out.println("начинаю  читать файл по строке и записывать в List");
        String line;
        try {
            while ((line = bufer.readLine()) != null) { //4 передаём из файла по одной строке, если буффер не равен нуллл
                this.parserStroka(line);                  // передаём по одной строке в метод parseStroke
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("файл прочитан в List начинаю сортировку");
        Collections.sort(list);                     // 6 какого то хрена дефолтная реализация не сработала list.sort();
        // требовало задать компоратор, я задавал всёравно сротировать не хотела
        System.out.println("Файл отсортирован, вывожу в консоль");
        System.out.println(this.list);
    }
 
    /**
     * 5  В этот метод будет приходить строка, символов, и запихиваться в лист
     * еслиб мы пихали чисто строки их тоже можно отсортировать
     * но будем по правильному переводим массив символов в интеджер и суем по одной группе в лист
     *
     * @param string
     */
    public void parserStroka(String string) {
        String[] strim = string.split(" ");
        for (int i = 0; i < strim.length; i++) {
            if (Integer.parseInt(strim[i])%2>0){ //проверяе что число чётное
                continue;                       //если не чётное перейдём с следующему числу
            }
            this.list.add(Integer.parseInt(strim[i]));
        }
    }
 
    /**
     * меню ввода
     *
     * @param command
     * @return
     */
    public String input(String command) {
        if (command != null) {
            System.out.println(command);
            command = scanner.nextLine();
        } else {
            System.out.println("укажите путь к файлу, например \"D//google.txt\"");
            command = scanner.nextLine();
        }
        return command;
    }
}
Кликните здесь для просмотра всего текста

укажите путь к файлу, например "D//google.txt"
/впдлвадпдвьрбьв
файл не найден, повторите попытку ввода, или введите "exit", для выхода из программы
d://file.txt
Файл найден
начинаю читать файл по строке и записывать в List
файл прочитан в List начинаю сортировку
Файл отсортирован, вывожу в консоль
[2, 4, 4, 12, 88, 148, 156, 298, 632, 992, 3694]
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
29.07.2018, 17:24
Java
1
2
3
4
5
6
7
8
9
10
public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new FileReader(new File("D:/test.txt")));
        reader.lines()
                .flatMap(x -> Arrays.stream(x.split(" ")))
                .map(Integer::parseInt)
                .filter(x -> x % 2 == 0)
                .sorted()
                .forEach(System.out::println);
        reader.close();
    }
3vik,
Ну, ввод имени файла уж сам...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.07.2018, 17:24
Помогаю со студенческими работами здесь

Из файла создать массив, в котором найти разность между суммой четных чисел и произведением нечетных чисел
Создать файл, куда записать n целых чисел. Из файла создать массив, в котором найти разность между суммой четных чисел и произведением...

Поиск в водимом целочисленном одномерном массиве четных чисел и вывод полученного результата в виде массива четных чисел
Напишите программу, выполняющую следующий алгоритм: ввод целочисленного одномерного массива, поиск в нем четных чисел и вывод полученного...

Отсортировать столбцы в массиве по уменьшению сумм четных чисел. Сортировка выбором. Исправить код
Задача: Задать двумерный массив целых чисел m=5, n=6. Отсортировать столбцы в массиве по упаданию сум парных чисел. Сортировка выбором....

Создать файл из четных чисел исходного файла
Программа открывает текстовый файл, который содержит некоторое количество целых чисел. Создать новый файл из четных чисел исходного файла....

Найти количество четных чисел среди компонентов файла
Дан фаил компоненты которого являются целыми числами. Найти кол-во четных чисел среди компонентов обьясните пожалуста как считать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru