Java 如何制作字符串数组来存储“a”的单词;字典;从一个.txt文件?

Java 如何制作字符串数组来存储“a”的单词;字典;从一个.txt文件?,java,arrays,string,dictionary,Java,Arrays,String,Dictionary,我需要制作一本从.txt文件中提取单词的词典。这些单词(逐行分隔)需要存储在字符串数组中。我已经将这些单词分开并添加到一个新的.txt文件中,但我不知道如何将它们分别添加到字符串数组中。您需要计算文件中的行数。创建该大小的数组 然后,对于文件中的每一行,读取它并将其插入到索引[lineReadFrom]的数组中,因为不允许使用ArrayList或LinkedList对象,我建议在读取输入文件时“动态”保存找到的每个单词。以下是完成此任务所需的一系列步骤: 1。逐行阅读文件:使用通用的new Bu

我需要制作一本从
.txt
文件中提取单词的词典。这些单词(逐行分隔)需要存储在
字符串
数组中。我已经将这些单词分开并添加到一个新的
.txt
文件中,但我不知道如何将它们分别添加到
字符串
数组中。您需要计算文件中的行数。创建该大小的数组


然后,对于文件中的每一行,读取它并将其插入到
索引[lineReadFrom]

的数组中,因为不允许使用
ArrayList
LinkedList
对象,我建议在读取输入文件时“动态”保存找到的每个单词。以下是完成此任务所需的一系列步骤:

1。逐行阅读文件:使用通用的
new BufferedReader(new FileInputStream(“/path/to/file”)
方法并逐行阅读(我假设您已经这样做了,查看代码)

2。检查每一行是否有单词:
字符串将每一个可能的单词按空格分隔。split()
并删除标点字符

3。保存每个单词:循环通过
String.split()
返回的字符串数组,对于您认为是单词的每个元素,更新您的统计信息,并使用通用的
new BufferedWriter(new FileWriter(“”))将其写入字典文件。write(…)


4。关闭您的资源:在完成读写器循环后,最好在
finally
块中关闭读写器。

以下是完整的代码示例:

public static void main(String[] args) throws IOException {
    File dictionaryFile = new File("dict.txt");

    // Count the number of lines in the file
    LineNumberReader lnr = new LineNumberReader(new FileReader(dictionaryFile));
    lnr.skip(Long.MAX_VALUE);

    // Instantiate a String[] with the size = number of lines
    String[] dict = new String[lnr.getLineNumber() + 1];
    lnr.close();

    Scanner scanner = new Scanner(dictionaryFile);
    int wordNumber = 0;

    while (scanner.hasNextLine()) {
        String word = scanner.nextLine();
        if (word.length() >= 2 && !(Character.isUpperCase(word.charAt(0)))) {
            dict[wordNumber] = word;
            wordNumber++;
        }
    }
    scanner.close();
}
在一个118620行文件上完成执行大约需要350毫秒,因此它应该可以满足您的需要。请注意,我在开始时实例化了数组,而不是在每一行上创建一个新的
字符串[]
(并像在代码中那样替换旧的)

我使用
wordNumber
跟踪当前数组索引,以便将每个单词添加到数组的正确位置


我还使用了
.nextLine()
而不是
.next()
,因为你说字典是用行而不是空格分隔的(这就是
.next()
所使用的)。

如果你愿意通过skype向我展示你的意思,那会很有帮助。因为我觉得我这样做了,但仍然会出错。我发布了代码。也许你可以看看我是否在正确的轨道上。谢谢你,汤姆!每次通过while循环时,您都在创建数组。只创建一次数组。计算出它应该有多大/在你开始添加东西之前。好的。我把它放在循环之外,现在仍然得到相同的错误:线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:0位于Dictionary.searchText(Dictionary.java:47)第47行是代码中的“dict[I]=word”。有什么问题吗?重新开始。计算文件中的行数。创建该大小的数组。然后在文件中循环向数组中添加单词。你说的“字典”是什么意思?键值对的散列?如果是这样的话,我们可以通过字典使用
HashMap
来实现,我的意思是这就是我们实际的任务。假设我们通读.txt文件的行(它是.txt文件中的一本书)并扫描每个单词以检查它是否是小写,等等。然后我们必须将所有这些单词添加到字符串数组中,在扫描所有3个不同的.txt文件后,它会将数组中的每个字符串添加到一个名为Dictionary.txt的新.txt文件中。