編集私はばかです。テキスト ファイル全体を 1 つの文字列として読み取り、その文字列を好きなだけ操作できることに気付きました (これにより、テキスト ファイルを 1 回読み取るという要件が満たされます)。より単純な質問を提案する際に、テキスト ファイルの内容を 1 つの大きな「ole 文字列」に変換するにはどうすればよいでしょうか? 私はちょうど今、脳のおならをしています。
さて、タイトルはほとんどジレンマを示しています。これは私が完成したコードです。これはコード全体ではありませんが、一般的に私の問題に関係するものです。現在、テキスト ファイルを 2 回読み込む必要があります。1 回目は theMaze 属性のディメンションをインスタンス化し、2 回目のスキャナーは配列内の対応するスポットに文字を割り当てます。テキスト ファイルの内容のスペースを知る必要があることを考えると、ファイルを 1 回で読み取る方法がわかりません。どんな助けでも大歓迎です!また、私が必要な場合は、喜んで指定します。ただ尋ねてください!
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;
public class maze {
private char[][] theMaze; // Will represent the maze
private int colStart, rowStart; // Location of the ‘S’ symbol in the maze
private int rows, cols; // Number of rows and cols in the maze
public maze(String filename) throws IOException{
this.cols = 0;
this.rows = 0;
File Maze = new File(filename);
Scanner input = new Scanner(Maze);
for(rows = 0; input.hasNext() == true; rows++){
String line = input.nextLine();
cols = line.length();
}
this.theMaze = new char[rows][cols];
String[] data = new String[rows];
Scanner inputAgain = new Scanner(Maze);
for(int i = 0; i < rows; i++){
data[i] = inputAgain.nextLine();
for(int j = 0; j < cols; j++){
char placeholder = data[i].charAt(j);
theMaze[i][j] = placeholder;
}
}
findStart();
boolean yes = solve(rowStart, colStart);
print(yes);
}