首页 > 解决方案 > 将由字符组成的网格输入到双精度数组中

问题描述

我的问题需要我将此网格输入到字符双数组中

.#....

..#...

..#..#

...##.

.#....

我尝试使用基本的行和列进行循环

这是我的代码:

for(int i = 0 ; i < rows ; i++){
    for(int j = 0 ; j < columns ; j++){
        grid[i][j] = s.next().charAt(0);
        System.out.println(grid[i][j]);
    }
}

该代码仅输出网格的第一列,然后抛出 NoSuchElementFoundException。我不确定它有什么问题,有没有其他方法可以解决这个问题?

标签: javaarrays

解决方案


在您的示例中,s.next()每次调用都会抓取下一行(不是字符),因此您必须保存该行,然后在列循环中索引该行的字符。

假设行和列大小已正确设置,以下内容应适用于您想要的内容:

char[][] grid = new char[rows][columns];
for(int i = 0 ; rows; i++){
    String row = s.next();
    for(int j = 0 ; i < columns; j++){
        grid[i][j] = row.charAt(j);
        System.out.println(grid[i][j]);
    }
}

代码如下:对于每个行索引i,从文件中读取下一行,然后对于每个列索引j,从行中获取当前列索引的字符,最后将其放入网格数组中。

您可能还想使用s.nextLine()而不是,s.next()因为您的输入由行分隔,因为这将避免读取任何换行符,例如\n\r


推荐阅读