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

Java 通过读取一次文本文件,将文本文件中的字符指定给二维数组,java,arrays,2d,Java,Arrays,2d,编辑我是个白痴。我意识到我可以将整个文本文件作为一个字符串读取,然后根据需要对该字符串进行操作(这将满足一次性读取文本文件的要求)。 我想在提出一个更简单的问题时,如何将文本文件的内容转换为一个大的“ole字符串”?我现在只是在放屁 这个标题很好地说明了这个困境。这是我完成的代码。 这不是全部代码,但通常与我的问题相关。 目前,我需要在文本文件中读取2次,第一次实例化theMaze属性的维度,第二次扫描程序将字符分配到数组中的相应位置。考虑到你需要知道文本文件中内容的空间,我不明白你怎么能一次读

编辑我是个白痴。我意识到我可以将整个文本文件作为一个字符串读取,然后根据需要对该字符串进行操作(这将满足一次性读取文本文件的要求)。 我想在提出一个更简单的问题时,如何将文本文件的内容转换为一个大的“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);
}
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.IOException;
导入java.util.Scanner;
公共类迷宫{
private char[][]theMaze;//将表示迷宫
private int colStart,rowStart;//迷宫中“S”符号的位置
private int rows,cols;//迷宫中的行数和列数
公共迷宫(字符串文件名)引发IOException{
这是0.cols=0;
这是0.rows=0;
文件迷宫=新文件(文件名);
扫描仪输入=新扫描仪(迷宫);
for(rows=0;input.hasNext()==true;rows++){
String line=input.nextLine();
cols=line.length();
}
this.theMaze=新字符[行][cols];
字符串[]数据=新字符串[行];
扫描仪输入增益=新扫描仪(迷宫);
对于(int i=0;i
您可以使用
列表来存储字符。这是一个

关于您的编辑,您可以像这样读取字符串中的整个文件

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

这使得扫描器使用
\Z
作为分隔符,它是字符串的结尾,并将整个文件作为一个标记来读取。我在某处学会了这个方法,归功于原始作者。

哇。快速响应。谢谢。不过,我实际上刚刚学会了链表。我不想偷懒,但我宁愿避免那个方法od加在一起。这可能更简单。我如何扫描文本文件一次,并将数据引用为一个字符串?谢谢!还有更快的第二次响应。让我试试,我会回到yaWell,这是一个漂亮的java技巧。一切都很好。再次感谢。@BradleyHall-如果它解决了您的问题,您可以接受答案。