わかりました、これをもう一度試してみましょう。タイトルが悪くて申し訳ありません。これを何と呼べばいいのかわかりません。私はこれまでファイル I/O をあまり行ったことがありませんでした。個人的には、Java は絶対にひどいと思いますが、それでもやらなければなりません。
ちょっとした背景情報です。これは私の Conway の Game of Life プロジェクトであり、他のすべてのコードは問題なく動作します。あとは I/O を実行するだけです。
次のようなテキスト ファイルから読み込んでいます。
したがって、これが行うことは、最初の 2 つの数値が配列に必要なサイズであり、その後の文字列は無関係です。そして、この例ではセル配列の配列が続きます。それはグライダーの配列です。今私の問題は、最初の行を文字列に格納し、残りを配列に格納する方法がわからないことです。以下は私が行ったことであり、n^∞ の Big 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 を行うためのより簡単な方法を誰か教えてもらえますか? コードは必要ありません。その方法の説明だけです。