Java 导入文本文件和双数组

Java 导入文本文件和双数组,java,arrays,import,Java,Arrays,Import,我正在尝试编写一个方法,导入一个包含大量单词的文本文件,然后找到一定长度的单词并打印出来。 我不是在寻找代码,而是一个澄清,如果我正确地理解了我要实现的目标 因此,我将使用throw exception导入文本,并获取特定单词的字母数: public static void name(int size) throws Exception{ Scanner inputFile = new Scanner(new File("2of12inf.txt")); 然后创建一个新的数组列表: int[]

我正在尝试编写一个方法,导入一个包含大量单词的文本文件,然后找到一定长度的单词并打印出来。 我不是在寻找代码,而是一个澄清,如果我正确地理解了我要实现的目标

因此,我将使用throw exception导入文本,并获取特定单词的字母数:

public static void name(int size) throws Exception{
Scanner inputFile = new Scanner(new File("2of12inf.txt"));
然后创建一个新的数组列表:

int[] list = new int[MAX_SIZE]; //MAX_SIZE is initially a small number, say 100
int listSize = 0;
如果单词列表的大小超过我的MAX_size数组,那么我将复制现有数组并将其加倍,以使单词的数量适合列表

if (listSize == list.length)
{
  int[] temp = new int [2*list.length];
  for(int i = 0; i < list.length; i++){
    temp[i] = list[i];}
  list = temp;
}
list[listSize] = size;
listSize++;

inputFile.close();}
这是我对如何写这个方法的初步理解,这是一个正确的想法,仅仅是能够阅读单词并列出它们吗


编辑:对不起,我没有提到我不能使用ArrayList

如果在运行程序之前知道您感兴趣的长度,那么在迭代这些单词时只需保存这些单词就足够了

我的意思是:

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.SortedSet;
import java.util.TreeSet;

public class WordLengthPrinter {
    public static void main(String[] args) throws Exception {
        if (args.length != 2)
            throw new IllegalArgumentException("Specify filename as first parameter. Word length is second.");

        final String fileName = args[0]; // file name is first input argument
        final int wordLength = Integer.parseInt(args[1]); // the desired wordlength is second argument

        // lets store the words of correct size in a sorted set
        SortedSet<String> wordsOfDesiredLength = new TreeSet<String>();

        // read file line by line while checking word lengths and only store words of correct length
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)))) {
            String line = null;
            while ( (line = reader.readLine()) != null) {
                if (line.length() == wordLength) wordsOfDesiredLength.add(line);
            }
        }

        // print resulting words
        for (String word : wordsOfDesiredLength) {
            System.out.println(word);
        }
    }
}

有什么原因不能使用ArrayList吗?另外,为什么要存储不符合您需要的字长的单词?为什么不使用已经定义的动态分配的ArrayList?例如ArrayList=新的ArrayList@AlexanderKohler道歉,我只是在我的问题中补充说我不会使用ArrayList。不幸的是,我不得不用另一种方式,我想知道这是否是正确的想法。