java - 使用扫描仪从 txt 文件中读取字符并添加到二维数组
问题描述
我有一个 txt 文件,我正在尝试使用扫描仪类读取。
我正在使用双循环来读取文件并将其写入二维数组。
该文件如下所示:
3 3 . R#。. # . . #
第一行分别是二维数组的长度和宽度。
如果它读取了一个类似的 txt 文件,但它不是 char 它有这样的 int,我得到了这个工作:
3 3 1 0 1 1 1 1 0 0 1
我在这里使用的方法如下所示:
readFile(String filename){
Scanner scan = new Scanner(new File(filename));
// read the first two numbers in the file for the size of the array
int numberRows = scan.nextInt();
int numberColumns = scan.nextInt();
char[][] grid = new char[numberRows][numberColums];
for (int i = 0; i < numberRows; i++) {
for (int j = 0; j < numberColumns; j++) {
grid[i][j] = scan.next().charAt(0);
}
}
}
我希望这与使用 char 而不是 int 时的工作方式相同。
但是,当 scan.next().charAt(0) 实际运行试图从 txt 文件中读取字符时,我收到错误 NoSuchElementException。
我是否试图读取字符串而不是字符?我会假设一个字符会被java扫描仪类读取为一个字符。
解决方案
Scanner.next()
总是返回一个String
. 请查看https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html了解更多信息。scan.next()
在对eg执行任何操作之前scan.next().charAt(0)
,您应该检查if (scan.hasNext())
条件。
推荐阅读
- javascript - 如何制作半圆形进度条?
- tensorflow - TensorFlow Timeline 中 GPU_0_bfc 分配器和 GPU_host_bfc 分配器的区别
- google-apps-script - 每个用户的 Google Script addEmailReminder 时间不同
- python - 访问 Python 字典中的项目
- java - 在 Flutter 应用和桌面 Java 应用之间发送/接收数据
- angular - 无法使用角度服务向角度组件显示数据
- javascript - Click 事件在 IE 中不起作用,但在其他浏览器中可以正常工作
- python - Pandas 如何计算协方差矩阵?
- javascript - 如何使用 onchange() 清除 select 中的 innerHTML 选项?
- amazon-web-services - AWS Elastic Beanstalk - Go 示例应用程序