使用Scanner读取文件并存储在ArrayList中?

时间:2018-04-01 23:36:36

标签: java arraylist while-loop java.util.scanner

我的代码到目前为止。 (请记住,这是我的第一个编程课程,虽然循环仍然很难对我来说很新。

import java.util.ArrayList;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.Group;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;


public class InsultGenerator extends Application
{
ArrayList<String> adjectives1;
ArrayList<String> adjectives2; 
ArrayList<String> nouns;

public void start(Stage primaryStage) throws FileNotFoundException
{
    File file = new File("insultData.txt");
    Scanner inFile = new Scanner(file);

    while (inFile.hasNext())
    {

    }


}
}

所以我的学校有一个项目要求我带一个包含3列文字的文本文件。我必须读取文本文件并将每个列存储在3个不同的ArrayLists中。以下是描述所需内容的确切陈述。

使用Scanner对象读取输入文件。请记住向start方法头添加一个throws FileNotFoundException子句。

在类级别(因此可以在其他方法中使用),声明并创建三个名为adjectives1,adjectives2和nouns的ArrayList对象。所有三个列表都应该包含String对象。

读取输入文件时,使用while循环检查输入文件是否还有要读取的数据:

while (inFile.hasNext())
{
   // read and store data
}

while循环的每次迭代都应该读取一行数据。将第一个形容词存储在adjectives1列表中的行上,第二个存在于adjectives2列表中,名词存储在名词列表中。使用扫描仪的下一个方法读取每个单词。您可以假设每一行都有三个值。

请注意,您不必知道将输入多少行输入数据。 ArrayList没有固定容量,可根据需要进行扩展和收缩。

1 个答案:

答案 0 :(得分:0)

在while循环中,首先将下一行文本读取为String。然后,将String拆分为数组。最后,将数组的每个元素推送到每个数组列表。

String line = inFilw.nextLine();
String[] words = line.split(" ");
adjectives1.add(words[0]);
adjectives2.add(words[1]);
nouns.add(words[2]);