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

Как можно импортировать файл .txt, а затем поместить каждую строку в список массивов как объект, но каждый объект должен быть массивом.

Файл .txt выглядит следующим образом:

1 a 1 2 
1 b 0 1 
2 a 2 3 
2 b 0 3 
3 a 3 1 
3 b 0 3 

Я хотел иметь возможность сделать каждую строку массивом объектов примерно так, чтобы можно было вызывать объект и конкретную точку в массиве:

<1,a,1,2> 
<1,b,0,1> 
<2,a,2,3> 
<2,b,0,3> 
<3,a,3,1>
<3,b,0,3> 

, а затеместь список массивов, где каждая строка (может быть любое количество строк, поэтому я выбрал список массивов) - это одна вещь в списке массивов. вроде как <line1,line2,line3,etc..>, поэтому я могу использовать список массивов, а затем значения в отдельных массивах в списке массивов.

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


        Scanner input = new Scanner(System.in);  // Create a Scanner object
        String inputString = input.nextLine(); 



        try {

            BufferedReader FSMreader = new BufferedReader(new FileReader(args[0]));      
            List<FSMline> line = new ArrayList<>(); 
            List<String> currentState = new ArrayList<>();
            List<String> inputChoice = new ArrayList<>(); 
            List<String> outputFunction = new ArrayList<>();
            List<String> nextState = new ArrayList<>();



            String lines;
            while ((lines = FSMreader.readLine()) != null) {

                line.add(new FSMline(lines.split(" ")));

            }

Любая помощь приветствуется, потому что у меня заканчивается время в классе, который я изо всех сил пытаюсь понять.

спасибо

1 Ответ

2 голосов
/ 02 октября 2019

Поскольку вы не упомянули тип данных FSMline, я создаю коллекцию (список массивов массивов) - List<String[]> - для хранения содержимого данного текстового файла следующим образом:

BufferedReader fsmReader = new BufferedReader(new FileReader(args[0]));

List<String[]> contentList = new ArrayList<>();
String lines;
while ((lines = fsmReader.readLine()) != null) {
    contentList.add(lines.split(" "));
}

//print the list     
for (String[] content : contentList) {
    System.out.println(Arrays.toString(content));
}

Консольный вывод:

[1, a, 1, 2]
[1, b, 0, 1]
[2, a, 2, 3]
[2, б, 0, 3]
[3, а, 3, 1]
[3, б, 0, 3]

ОБНОВЛЕНО

И если вы хотите получить третий элемент первого массива в списке массивов, пожалуйста, используйте get(int index) и [int index], чтобы извлечь элемент из списка и массива соответственно:

System.out.println(contentList.get(0)[2]);

ИлиВы можете преобразовать массив в список с помощью Arrays.asList(), затем вы также можете использовать get(int index):

System.out.println(Arrays.asList(contentList.get(0)).get(2));
...