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

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

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

Author24 — интернет-сервис помощи студентам
Здраствуйте, задача стоит такая:
В файле 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.10.2018, 22:47
Ответы с готовыми решениями:

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

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

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

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

5
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
17573 / 10326 / 2820
Регистрация: 21.10.2017
Сообщений: 22,388
25.10.2018, 23:40 2
Лучший ответ Сообщение было отмечено Airwalk91 как решение

Решение

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

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

Считывание из файла
Подскажите плиз как считать весь файл например в чаровский массив поэлементно. BufferedReader...

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru