将字符串数组转换为二维字符数组

时间:2019-02-15 01:48:31

标签: java string multidimensional-array char type-conversion

我的代码从内部写有迷宫的文件中读取输入,文件内部看起来像这样。     7 7     咕咕     XXOXOOX     OXOOOXX     XXXOOXO     XXXXOXX     超音速     XXXXXXX(它们各自位于单独的行上,不确定如何在此处显示)

数字是维度,G是目标S的开始,目前并不重要。我将文件逐行读取到Strings数组中。所以我的数组看起来像这样{“ GOOOOXO”,...,“ XXXXXXX”}现在我想将字符串转换为2d字符数组,其中字符的存储方式与上面显示的迷宫相同。

第一个嵌套的for循环仅读取输入的文件,并将每一行保存为数组中的字符串,第二个数组用于将字符串转换为字符以将其保存到2d数组中,并且仍然设法保持迷宫。我得到了数组索引超出范围的异常。但是,老实说,在被困了几个小时之后,我实在不知所措。

    int dimensionsX = input.nextInt();
    int dimensionsY = input.nextInt();
    String[] lines = new String[dimensionsY];
    char[][] maze2 = new char[dimensionsX][dimensionsY];

    for (int j = 0; j < dimensionsY; ++j) {
        if (input.hasNextLine()) {
            lines[j] = input.nextLine();
            System.out.println(lines[j]);
            //System.out.println(j);
        }

    }



    for (int i = dimensionsX; i > 0; --i) {
        for (int j = dimensionsY; j > 0; --i) {
            maze2[i][j] = lines[i].charAt(j);
            System.out.print(maze2[i][j]);
            if (i == lines.length) {
                System.out.println();
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

例如:

int dimensionsX = input.nextInt();
int dimensionsY = input.nextInt();
String[] lines = new String[dimensionsY];
char[][] maze2 = new char[dimensionsY][];

for (int j = 0; j < dimensionsY; ++j) {
    if (input.hasNextLine()) {
        lines[j] = input.nextLine();
        if(lines[j].length()<dimensionsX){
           System.err.println("we are doomed. Input malformed in line j: it has less then" + dimensionsX + "characters");
           System.exit(1);     
        }
        maze2[j] = lines[j].toCharArray();
        System.out.println(lines[j]);
        //System.out.println(j);
    }else{ 
       System.err.println("we are doomed. Input has too few lines");
       System.exit(1);
    }
}
//taken as is, but makes me wonder if it is intended to have dimensionsX as the Y coordinate but well...
for (int i = dimensionsX; i > 0; --i) {
    for (int j = dimensionsY; j > 0; --j) {
        System.out.print(maze2[j-1][i-1]);
    } 
    System.out.println();
}

当然,如果输入格式错误,例如,您想做的事情与退出程序不同。抛出异常,或者如果您的输入总是正确的,则什么也不做(是吗?)。