java - 尝试并捕获 InputMismatchException 处理。我想创建可以用控制台玩的井字游戏
问题描述
在这里找到了一个解决方案如何正确处理“InputMismatchException”并将其实现到我的代码中。但结果仍然不是我所期望的。
我必须扫描 2 个整数(x,y 坐标)并将它们添加到数组中。尝试分别为 x 和 y 创建两个循环,但结果是相同的。
private static void enterCoordinate(char[][] layoutMatrix) {
int[] xy = new int[2];
boolean again = true;
while (again) {
try {
System.out.print("Enter the coordinates: ");
for (int i = 0; i < 2; i++) {
xy[i] = scanner.nextInt();
}
again = false;
}
catch (InputMismatchException e) {
System.out.println();
System.err.println("You should enter numbers!");
scanner.next();
}
}
输出如下
这不是我想看到的结果
解决方案
如果nextInt()
失败,它不会消耗失败的令牌......所以你会递归,立即nextInt()
再次调用,这也会失败......所以你会再次递归,等等,永远。
您可能应该调用scanner.next()
失败,以使用“不是数字的令牌”。只需添加该行可能会解决问题,但我建议您也将其转换为while
循环...我认为在这里递归没有任何好处(如果用户仍然可能导致堆栈溢出)输入大量无效数字)。
推荐阅读
- python - 如何在 Python 中列出所有类 cached_properties?
- html-table - HTML 表格在 Open Office Writer 中无法正确显示
- azure - 如何在 Python 中从 YAML 文件创建 Azure ML Inference_Config 和 Deployment_Config 类对象?
- arrays - 当我的索引是变量时无法访问数组值
- java - 如何在 java 中为 hashcode() 方法编写 ptest(mutation test)
- angular - 为什么在 Angular 中不显示输出(浏览器预览)的变化
- kotlin - 一起使用 akka actor 模型和 kotlin 协程
- ssl - javax.net.ssl 警告“user_canceled”是什么意思?
- javascript - 我如何使用 WPML 翻译 javascript 中的 html 文本
- python - PyPDF 超链接