Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 20.03.2018
Сообщений: 15

Считывание с файла

25.10.2018, 22:47. Показов 2159. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте, задача стоит такая:
В файле 30 чисел, нужно считать в масив 10 елементов, отсортировать, записать в промежуточный файл, и так делать пока не закончится числа в начальном файле(в нашем случае 3 раза). Потом с помощью сортировки склеить эти отсортированые масивы из файлов, и записать в начальный.
Моя проблема:
Я могу считать только первые 10 елементов из начального файла, но никак последуйщие елементы.
Прошу помочь разобратся с считкой из файла.
Когда я захожу во второй раз в цикл считывать не первые 10 чисел, а следуйщие 10 (з 10 по 20)
Ниже прикрепляю код:

Файл notes.txt
54 12 36 39 46 83 51 60 53 28 76 35 77 1 74 58 21 30 39 11 19 13 83 58 78 26 96 94 89 79

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
package com.company;
 
 
import java.io.*;
import java.util.Scanner;
 
 
public class Main {
 
    public static void main(String[] args) {
 
 
        int[] array = new int[10];
 
        Sorted(array);
    }
 
 
    public static void Sorted(int[] arr) {
        File file = new File("C://Users//misha//IdeaProjects//SecondLaba//notes.txt");
 
        //считуємо данні з файлу
        for (int b = 0; b < 3; b++) {
            try {
                Scanner fileReader = new Scanner(new FileReader(file));
 
                for (int i = 0; i < 10; i++) {
                    arr[i] = fileReader.nextInt();
                }
 
 
                System.out.println("Не відсортований масив: ");
                for (int v : arr) {
                    System.out.println(v);
                }
            } catch (IOException e1) {
                e1.printStackTrace();
                System.err.println("Error: " + e1.getMessage());
            }
 
 
            System.out.println();
 
 
            // сортуємо підмассив
 
            MergeSort sort = new MergeSort();
            sort.mergeSort(arr);
            for (int s : arr) {
                System.out.println(s);
            }
 
 
            // вписуємо наш відсортований масив у файл
 
 
            File MyFile = new File("arraysort.txt"+b);
 
            try {
                BufferedWriter fileWriter = new BufferedWriter(new FileWriter(MyFile));
 
                for (int s : arr) {
                    fileWriter.write(String.valueOf(s));
                    fileWriter.write(" ");
                }
                fileWriter.close();
 
            } catch (IOException e) {
                e.printStackTrace();
            }
 
 
        }
    }
}
Сортировка:
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
package com.company;
 
public class MergeSort {
 
    public void mergeSort(int[] inputArray) {
        int size = inputArray.length;
        if (size < 2)
            return;
        int mid = size / 2;
        int leftSize = mid;
        int rightSize = size - mid;
        int[] left = new int[leftSize];
        int[] right = new int[rightSize];
        for (int i = 0; i < mid; i++) {
            left[i] = inputArray[i];
 
        }
        for (int i = mid; i < size; i++) {
            right[i - mid] = inputArray[i];
        }
        mergeSort(left);
        mergeSort(right);
        merge(left, right, inputArray);
    }
 
    public static void merge(int[] left, int[] right, int[] arr) {
        int leftSize = left.length;
        int rightSize = right.length;
        int i = 0, j = 0, k = 0;
        while (i < leftSize && j < rightSize) {
            if (left[i] <= right[j]) {
                arr[k] = left[i];
                i++;
                k++;
            } else {
                arr[k] = right[j];
                k++;
                j++;
            }
        }
        while (i < leftSize) {
            arr[k++] = left[i++];
        }
        while (j < rightSize) {
            arr[k++] = right[j++];
        }
 
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.10.2018, 22:47
Ответы с готовыми решениями:

Считывание из файла
есть файл в нем хранится строки: 1 primer1 3751941 2 primer2 3759797 3 primer3 3752596 2 primer2 3759797 3 primer3...

считывание с файла
Дан файл вещественных чисел. Найти среднее арифметическое его элементов. Помогите исправить ошибку try { ...

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

5
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
25.10.2018, 23:40
Лучший ответ Сообщение было отмечено Airwalk91 как решение

Решение

Цитата Сообщение от Airwalk91 Посмотреть сообщение
Scanner fileReader = new Scanner(new FileReader(file));
Вот это из цикла вынеси. Ты каждый раз заново создаешь этот ридер, который читает с начала файла
1
0 / 0 / 0
Регистрация: 20.03.2018
Сообщений: 15
26.10.2018, 00:33  [ТС]
Прошу прощения, не уточнил.
Считка/Запись должны находиться в try/catch блоках.

Как быть тогда?
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
26.10.2018, 00:40
Цитата Сообщение от Airwalk91 Посмотреть сообщение
Считка/Запись должны находиться в try/catch блоках.
Как быть тогда?
Это никак не связано с тем, что советовали. Объявляете переменную в не блока try, а считываете внутри. А лучше использовать try-with-resources.
1
0 / 0 / 0
Регистрация: 20.03.2018
Сообщений: 15
26.10.2018, 01:18  [ТС]
Благодарю, вы были правы!
Подскажите, как теперь отсортировать то что в файлах, и записать этот склееный массив?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
26.10.2018, 07:17
Как о сортировать десять чисел - в поиск, как объединить - merge sort посмотри.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.10.2018, 07:17
Помогаю со студенческими работами здесь

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

Считывание из файла
Подскажите плиз как считать весь файл например в чаровский массив поэлементно. BufferedReader reader = new BufferedReader(f1); ...

Считывание данных из файла
Проблема состоит в том, что при записи каждой новой строки в List игнорируется 1 символ, например должно быть &quot;Камень&quot;, а...

Считывание чисел из файла
String fileName = &quot;C:\\Users\\Борщ А В\\Desktop\\new.txt&quot;; FileInputStream file = new FileInputStream(fileName); ...

Построчно считывание а файла
String s = &quot;&quot;; Scanner in = null; try { in = new Scanner(new File(&quot;data.txt&quot;)); } catch...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru