java - java.util.NoSuchElementException:找不到行。以前工作,但以后不行。我不知道为什么
问题描述
我正在尝试制作一款游戏,无论出于何种原因,扫描仪之前都以单独的方法工作,但不是在这个方法中。
工作于:
Scanner in = new Scanner(System.in); // Scanner in case of invalid input
for (int i = 1; i <= p.getSpeed(); i++) { // loop to account for invalid direction
if (d.equalsIgnoreCase("right") || d.equalsIgnoreCase("r") && p.getX() <= width - 2) { // right
if (board[p.getY()][p.getX() + 1] == ' ') {
board[p.getY()][p.getX()] = ' ';
p.setX(p.getX() + 1);
board[p.getY()][p.getX()] = 'P';
}
else { // right not open
System.out.println("Please input a valid direction");
d = in.nextLine();
i--;
}
}
不适用于:
Scanner in = new Scanner(System.in); // Scanner in case of invalid input
int i = 1;
while (i == 1) {
if (d.equalsIgnoreCase("right") || d.equalsIgnoreCase("r") && p.getX() <= width - 2) { // right
for (int j = 0; j <= numZombies - 1; j++) {
if (zombie[j].getX() == p.getX() + 1 && zombie[j].getY() == p.getY()) { // checks each zombie to see if it is one to the right of the player
zombie[j].subtractHealth(p.getAttack());
break;
}
if (zombie[j].getX() == p.getX() + 2 && zombie[j].getY() == p.getY()) {
zombie[j].subtractHealth(p.getAttack());
break;
}else if (j == numZombies - 1) { // if no zombies are found
System.out.println("There is no zombie there, please insert a new direction");
d = in.nextLine();
i--;
}
}
}
}
方法都有效,逻辑很好,我只是不知道为什么它适用于第一个而不是第二个
解决方案
关闭第一个扫描仪是问题所在,摆脱该代码修复它。谢谢查尔斯
推荐阅读
- php - 如何邮寄表格的价值而不是contact.blade.php的截图
- java - 在没有 filezilla 或 winscp 的情况下从 java 访问 FTP 文件
- spring - 无法将 osgi 服务 bean 公开为类而不是接口
- asp.net - 如何防止对aspx页面的CSRF攻击?
- python - Python中用户类的序列化
- c - 将字符串从指针复制到指针数组中的索引
- python - 当我添加 csrf 中间件时,Django 导致 403 禁止错误
- php - PHP在嵌套的foreach内部中断时
- cmd - Winrar 命令行在不使用通配符时不删除递归
- node.js - 如何在同一个 Heroku 应用上部署 Front & Back node.js?