0

編集私はばかです。テキスト ファイル全体を 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);
}
4

1 に答える 1

0

a を使用しList<List<Character>>て文字を格納できます。これは一です。

編集に関しては、ファイル全体を次のような文字列で読み取ることができます..

String data = new Scanner(new File(filename)).useDelimiter("\\Z").next();

これにより、スキャナー\Zは文字列の末尾である区切り文字として使用し、ファイル全体を単一のトークンとして読み取ります。私はどこかでこの方法を学びました。元の著者の功績によるものです。

于 2013-05-12T02:20:00.737 に答える