我试图编写一种导入大量单词的文本文件的方法,然后找到一定长度的单词并将其打印出来。 我不是在寻找代码,而是在澄清我是否正确地理解了我想要完成的事情。
所以,我将使用throw异常导入文本,并获取特定单词的字母数:
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();}
这是我对如何编写方法的原始理解,这是正确的思考,只是能够阅读单词并列出它们吗?
编辑:对不起,我没有提到我不使用ArrayLists。答案 0 :(得分:0)
如果您在运行程序之前知道自己感兴趣的长度,则只需在迭代单词时保存这些单词即可。
像这样我的意思是:
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);
}
}
}