繁体   English   中英

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

[英]turning an array of strings into a 2d array of chars

我的代码从内部写有迷宫的文件中读取输入,文件内部看起来像这样。 7 7 GOOOOXO XXOXOOX OXOOOXX XXXOOXO XXXXOXX SOOOOOX 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();
            }
        }
    }

例如:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM