通过读取文件一次,将文本文件中的字符分配给二维数组

时间:2013-05-12 02:13:16

标签: java arrays 2d

编辑我是个白痴。我意识到我可以在整个文本文件中读取一个字符串,然后根据需要操作该字符串(这将满足在文本文件中读取一次的要求)。 我想在提出一个更简单的问题时,我怎么能将文本文件的内容转换成一个大的'ole字符串?我现在只是脑屁。

这个标题几乎说明了进退两难的局面。这是我完成的代码。 这不是整个代码,但通常与我的问题有关。 目前,我要在文本文件中读取2次,其中第一次实例化theMaze属性的尺寸,第二次扫描器将字符分配给数组中的相应位置。我不明白你怎么能在文件中读取一次,考虑到你需要知道文本文件中内容的空间。 任何帮助将非常感激! 另外,我很乐意指明你是否需要我。请问!

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);
}

1 个答案:

答案 0 :(得分:0)

您可以使用List<List<Character>>存储字符。这是example

关于你的编辑,你可以用这样的字符串读取整个文件..

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

这使得扫描程序使用\Z作为字符串结尾的分隔符,并将整个文件作为单个标记读取。我在SO的某处学到了这种方法,归功于原始作者。