Как преобразовать текстовый файл в массив в Java, чтобы я мог работать с каждым массивом отдельно - PullRequest
0 голосов
/ 17 января 2020

У меня есть текстовый файл, содержащий некоторые числа с пробелом между каждыми 9 числами. Например: 853617639 975336865. Я экспортировал файл, используя этот код:

import java.io.*; 
public class ReadingFromFile { 

  public static void main(String[] args) throws Exception 
  { 
      try {
            FileReader fichierALire = new FileReader("Test.txt");
            int c = fichierALire.read();
            while (c != -1) {
                System.out.print((char) c);
                c = fichierALire.read();
                }
            fichierALire.close();
        } catch (IOException exception) {
            System.out.println("There's a mistake with: " + exception.getMessage());


        }
      }}

Теперь мне нужно преобразовать этот файл в массив для управления выводом. Я хочу узнать, повторяется ли в первых 9 числах одно число дважды или более, и если да, то я хочу заменить его числом, которое не использовалось. Затем я хочу сделать то же самое для другой партии (последние 9 номеров).

Моим первым шагом было бы преобразовать текстовый файл в массив, но я не нашел способа, который дал бы мне вывод: {8,5,3,6,1,7,6,3,9,9,7,5,3,3,6,8,6,5}

Когда я найду Чтобы получить этот вывод, мне нужно будет создать код, чтобы увидеть, есть ли int, который повторяется в первых 9 int, а затем изменить его так, чтобы он соответствовал условию, которое я сказал выше.

Спасибо за помощь!

1 Ответ

0 голосов
/ 17 января 2020

Я предполагаю, что ваши файлы выглядят так:

23213461 2136487236 2873648723 28734682 3674324 92341286 8726387462 2837467364 376427863473

Но это также подойдет для файла, подобного этому :

2376487234. построчно и разбить каждую строку на пустую строку. Затем вы можете проверить, является ли каждая подстрока (один символ) целым числом. Если это так, добавьте его в свой ArrayList nums, который можно преобразовать в массив, когда вы закончите, если хотите. Если это пробел или строка - ничего не делать.

Теперь вы можете обрабатывать свои логики c с вашим массивом nums, как вам нравится.

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;

public class Test {
    static ArrayList<Integer> nums = new ArrayList<Integer>();

    public static void main(String[] args) throws IOException {
        Files.lines(new File("yourFilePath/file.txt").toPath())
            .forEach(l -> addToMyArray(l.split("")));

        System.out.println(nums);
    }

    public static void addToMyArray(String[] arr) {
        for (String s : arr) {
            try {
                nums.add(Integer.parseInt(s));
            } catch(NumberFormatException e) {
                // do nothing
            }
        }
    }
}

...