0

目前我正在尝试读取字符串的文本文件并将它们放入每行的数组中。文本文件有 10 行,每行都有一串单词(从网站中提取的句子)。我的目标是将这些字符串存储到数组中(每行一个数组)。

这是我目前使用的包数组的代码;

public class sep_arr
{
    public static void main (String[] args) throws FileNotFoundException
    {

        Scanner DataFile = new Scanner(new File("EntityTagged.txt"));

        while(DataFile.hasNextLine()){
            String line = DataFile.nextLine();

            ArrayList<String> salesData = new ArrayList<String>();

            Scanner scanner = new Scanner(line);
            scanner.useDelimiter(",");
            while(scanner.hasNextDouble()){
                salesData.add(scanner.toString());
            }
            scanner.close();

            System.out.println(salesData);
        }

        DataFile.close();

    }
}

代码读取包含 10 个不同句子的“EntityTagged.txt”文件,并将它们存储在一个数组中。目前,执行时,它返回空数组

[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]

我的目标是将句子存储在这些数组中,然后使用“endsWith() 方法”从文本中提取特定单词。

任何帮助都感激不尽

谢谢

4

4 回答 4

0

如果你使用 java8,你可以这样做:

Files.lines(Paths.get("EntityTagged.txt")).toArray(String[]::new);

java.nio.file.Files 是一个用于处理文件的实用程序类,它在 java8 中有一个新方法lines,该方法返回一个字符串流,然后使用方法 toArray 和方法引用将该流转换为字符串数组到 String[] 的“构造函数”

于 2014-03-22T00:53:37.070 回答
0

有比使用扫描仪更好的方法来读取文件,并在 1.7 中添加了 java.nio

就解析每一行而言,如果你确定你有用逗号分隔的双打并且这就是你想要创建的,那么就去做吧。

这个成语应该适合你:

   Path file = Paths.get("EntityTagged.txt");
    List<String> fileContents = new LinkedList<>();
    try (BufferedReader reader = Files.newBufferedReader(file, Charset.defaultCharset()))
    {
        String line;
        while ((line = reader.readLine()) != null)
        {
            fileContents.add(line);
        }
    }
    return fileContents;

如果您想发布数据样本,我将帮助您确定您是否也正确标记了每一行。

于 2014-03-22T00:37:14.970 回答
0

我认为你的问题在这里

while(scanner.hasNextDouble()){
    salesData.add(scanner.nextDouble()+""); // you wrote scanner.toString()
}
于 2014-03-22T00:40:05.483 回答
0

这样做

Scanner DataFile = new Scanner(new File("EntityTagged.txt"));

ArrayList<String> salesData = new ArrayList<String>();
while (DataFile.hasNextLine()) {
    String line = DataFile.nextLine();

    salesData.add(line);
}

for (String str : salesData) {
    System.out.println(str);
}

DataFile.close();
于 2014-03-22T00:45:20.577 回答