java - 在java中执行nextInt函数时如何修复InputMismatchException
问题描述
我正在尝试通过读取带有逗号分隔数字的 txt 文件来使数独验证器工作。我的代码将第一行读入数组,然后在转到下一行时会引发 InputMismatchException 错误。我试过查找东西,但没有任何效果。这是我的代码以及 txt 输入文件包含的内容
String fileName = "data/sudoku-valid-1.txt";
Scanner s = null;
try {
s = new Scanner(new File(fileName));
s.useDelimiter(",");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
int array[][] = new int[9][9];
int i, j;
while(s.hasNext()) {
for(i=0; i<9; i++) {
for(j=0; j<9; j++) {
array[i][j] = s.nextInt();
}
}
}
文本文件:
1,5,7,9,8,3,6,2,4,
2,6,8,7,5,4,9,3,1,
9,4,3,6,1,2,7,5,8,
8,9,2,1,7,6,5,4,3,
3,1,6,5,4,8,2,7,9,
5,7,4,3,2,9,1,8,6,
7,3,5,4,6,1,8,9,2,
6,8,9,2,3,5,4,1,7,
4,2,1,8,9,7,3,6,5,
解决方案
使用也管理新行(空格,...)的分隔符。Scanner.useDelimiter
接受正则表达式
,\s*
这样做的好处是您不必费心知道数据的格式是什么,您无需检查任何内容即可阅读它。
例子 :
String s = "1,2,3,4,5,"
+ "\n6,7,8,9,10";
Scanner scan = new Scanner(s);
scan.useDelimiter(",\\s*");
while(scan.hasNext()){
System.out.println(scan.nextInt());
}
scan.close();
输出 :
1
2
3
4
5
6
7
8
9
10
推荐阅读
- python - 如何在 ubuntu 14.04 上将 python3.6 设为默认值
- linux-kernel - 如果我的系统上安装了 512 MB 的物理内存,Linux 内核如何处理内存映射
- r - 有什么方法可以从 R 中的累积 PCA 图中选择前 n 个 PCA 组件?
- javascript - 将百分比编码的表情符号显示为 html
- powershell - 将字符串转换为数据类型以存储在哈希表中
- java - GetByteArrayElements 未在此范围内声明
- maxima - 在最大值中通过引用调用:可能吗?
- javascript - 提交表单时如何轻松阻止页面重新加载?
- java - Java递归添加到列表
- html - 删除在我的容器内创建的空间