Java 输出中有奇怪的白色框

Java 输出中有奇怪的白色框,java,multidimensional-array,input,file-io,Java,Multidimensional Array,Input,File Io,我需要读取一个文本文件,然后将其中的所有字符存储到迷宫程序的二维字符数组中。我的问题是,当我试图打印出来时,它们显示为白色框。我已经附上了一个进一步澄清的图像 名为data4-1.txt的txt文件如下所示 4.5 0 0 0 0 0 0 1 0 1 1 0 1 0 1 2 0 1 0110101 在图像中,第一个块是输出的样子,而第二个块是它的外观 导入java.io.BufferedReader; 导入java.io.FileReader; 导入java.io.IOException;

我需要读取一个文本文件,然后将其中的所有字符存储到迷宫程序的二维字符数组中。我的问题是,当我试图打印出来时,它们显示为白色框。我已经附上了一个进一步澄清的图像

名为data4-1.txt的txt文件如下所示

4.5 0 0 0 0 0 0 1 0 1 1 0 1 0 1 2 0 1 0110101

  • 在图像中,第一个块是输出的样子,而第二个块是它的外观

导入java.io.BufferedReader;
导入java.io.FileReader;
导入java.io.IOException;
公开课测试4{
公共静态void main(字符串参数[]){
字符[][]迷宫=新字符[100][100];
int x=0,y=0;
试一试{
BufferedReader in=new BufferedReader(新文件读取器(“C:\\Users\\15mik\u 000\\Desktop\\Text\\data4-1.txt”);//读取指定目录中的文件
弦线;
而((line=in.readLine())!=null)//文件读取
{
字符串[]值=行。拆分(“”);
for(字符串str:values){
char curr=str.charAt(0);
迷宫[x][y]=电流;
系统输出打印(迷宫[x][y]+“”);
y++;
}
System.out.println(“”);
x++;
}
int rows=Character.getNumericValue(迷宫[0][0]);
int columns=Character.getNumericValue(迷宫[0][1]);
//System.out.println(迷宫[1][0]+1-1);//给我一个盒子
printArray(迷宫、行、列);in.close();
}捕获(IOException IOException){}
}
公共静态void printary(char[][]迷宫,int行,int列){
对于(int i=2;i
根据您的文件内容,我更喜欢
扫描仪和
nextInt
。我还将根据前两个
int
(s)调整
迷宫的大小,并存储
int
(s)。您可以使用和
Arrays.deepToString(Object[])
快速检查
maze
内容。大概

String folder = "C:\\Users\\15mik_000\\Desktop\\Text";
String file = "data4-1.txt";
File f = new File(folder, file);
try (Scanner scanner = new Scanner(f)) {
    int rows = scanner.nextInt();
    int cols = scanner.nextInt();
    int[][] maze = new int[rows][cols];
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            maze[i][j] = scanner.nextInt();
        }
    }
    System.out.println(Arrays.deepToString(maze));
} catch (IOException e) {
    e.printStackTrace();
}
String folder=“C:\\Users\\15mik\U 000\\Desktop\\Text”;
String file=“data4-1.txt”;
文件f=新文件(文件夹,文件);
尝试(扫描仪=新扫描仪(f)){
int rows=scanner.nextInt();
int cols=scanner.nextInt();
int[][]迷宫=新的int[行][cols];
对于(int i=0;i
似乎您的
打印数组(…)
逻辑有误

我想应该是这样的

public static void printArray(char[][] maze, int rows, int columns) {
    int j = 0;
    for (int x = 0; x < 2; x++) {
        j+=2;
        for (int i = 0; i < rows; i++) {
            System.out.println("");
            for (int k = 0; k < columns; k++)
                System.out.print(maze[x][j++] + " ");
        }
        System.out.println();
        System.out.println();
    }
}
publicstaticvoidprintary(char[][]迷宫,int行,int列){
int j=0;
对于(int x=0;x<2;x++){
j+=2;
对于(int i=0;i
顺便说一句,这只适用于当前填充
迷宫
阵列的方式。但是我看到了一个错误,当您从文件读取时,您填充
迷宫
数组

一旦你做了
x++
,你就不应该做
y=0
。如果是这样,则需要相应地更改
printary
逻辑


除此之外,考虑使用<代码>扫描器< /代码>按埃利奥特的建议读取文件。< /p>文件的内容是什么?抱歉,我只是添加了图像的IAS,<代码>迷宫[0 ] [ 0 ] <代码>和<代码>迷宫[0 ] [1 ] < /代码>都是代码> 0 < /代码>,对吗?
public static void printArray(char[][] maze, int rows, int columns) {
    int j = 0;
    for (int x = 0; x < 2; x++) {
        j+=2;
        for (int i = 0; i < rows; i++) {
            System.out.println("");
            for (int k = 0; k < columns; k++)
                System.out.print(maze[x][j++] + " ");
        }
        System.out.println();
        System.out.println();
    }
}