java - 将由字符组成的网格输入到双精度数组中
问题描述
我的问题需要我将此网格输入到字符双数组中
.#....
..#...
..#..#
...##.
.#....
我尝试使用基本的行和列进行循环
这是我的代码:
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。我不确定它有什么问题,有没有其他方法可以解决这个问题?
解决方案
在您的示例中,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
推荐阅读
- azure - 更改密码自定义策略中的“请求中提供的用户名或密码无效”错误
- java - Kotlin - 实现通用接口的通用抽象类
- r - R中spdep包中的全局莫兰
- asp.net-core - .NET Core 3 Endpoint Routing 导致重定向到不完整的 url
- jenkins - 为什么我的 Jenkins 的终端无法正常工作?
- python - 为什么这个 asyncio 信号量实现不能与 python 中的 aiohttp 一起工作
- spring - Spring Data Redis-ReadOffset.lastConsumed() 和 ReadOffset.latest() 在使用 Standalone 时不会在 StreamMessageListenerContainer 中工作
- jbpm - 可循环自定义数据类型列表的 DMN 模型规则
- javascript - 无法单击多边形顶部的矢量平铺点
- reactjs - React + 电子深度链接,如何从 React 应用程序中打开确切的路线