好吧,让我们再试一次,对不起,我不知道该怎么称呼这个糟糕的标题。我以前没有做过很多文件 I/O,我个人认为 Java 在这方面绝对是糟糕的,但我还是必须这样做。
一些背景信息,这是我的 Conway 的生命游戏项目,我所有的其他代码都可以正常工作,我现在只需要进行 I/O。
我正在从一个看起来像这样的文本文件中读取。
所以它的作用是前两个数字是数组需要的大小,它们后面的字符串是无关紧要的。之后是本例中单元格排列的数组,它是滑翔机的排列。现在我的问题是我不知道如何将第一行存储在字符串中,其余的存储在数组中。以下是我所做的,并为 n^∞ 的大 O 做好准备。
public char[][] fileIO(){
ArrayList<String> list = new ArrayList<String>();
char[][] newArray;
String[] tokens;
BufferedReader reader;
String inputLine;
try{
reader = new BufferedReader(new FileReader("untitled.txt"));
while((inputLine = reader.readLine()) != null){
list.add(inputLine);
}
reader.close();
}catch (IOException e){
System.out.println(e);
}
tokens = list.get(0).trim().split("\\s+");
newArray = new char[Integer.parseInt(tokens[0])][Integer.parseInt(tokens[1])];
for(int row = 0; row < newArray.length; row++){
for(int col = 0; col < newArray[row].length; col++){
for(int line = 1; line < list.size(); line++){
for(int Char = 0; Char < list.get(line).length(); Char++){
newArray[row][col] = list.get(line).charAt(Char);
}
}
}
}
return newArray;
}
我知道缺少评论,所以我将尝试解释我现在尝试做的事情;
我从文件中读取并将其全部存储在 ArrayList
得到第一个like的标记(10 20 Glider),并创建了一个实例化的数组,其值为10和20
然后继续循环遍历数组的行和列,然后是输入数组的每一行,然后循环遍历该行的每个字符,以在其相应位置添加到数组中。
但是,这似乎不起作用,我相信有一种更简单有效的方法可以做到这一点。所以我再问一次,谁能告诉我做这个 I/O 的更简单的方法?我不需要代码,只是解释如何这样做。