因此,在调用一个我将在下面发布的函数(在main中)后,在同一个main中创建一个新的扫描器对象不起作用,并给了我以下错误:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
int numHouse = 0;
int numSeed = 0;
System.out.println("Enter the total number of houses on the board: ");
Scanner houseInput = new Scanner(System.in);
numHouse = houseInput.nextInt();
它就放在我调用函数之后(在上面的代码中,我会关闭扫描器)。当我注释掉调用函数时,这个扫描器工作了,所以函数中的一些东西导致了扫描器中的错误。我花了几个小时寻找,但无法解决它,如果有人可以,我会非常感激。函数:
public void InitializePlayers() {
//change numPlayers to variable that contains number of players
boolean validInput = false;
do {
System.out.print("Enter Number of Players (1/2): ");
Scanner userInput = new Scanner(System.in);
int numPlayers = userInput.nextInt();
System.out.print("\n");
if(numPlayers == 1) {
//One Human Player, One AI Player
System.out.println("Single Player Selected");
validInput = true;
System.out.print("\n");
System.out.print("Enter Player One Name: ");
//Initialize Player 1
String p0_name = userInput.next();
Player Human1 = new Player(p0_name,0,false);
this.setPlayer0(Human1);
//Initialize AI
String AI_name = "Hal";
Player AI = new Player(AI_name,1,true);
this.setPlayer1(AI);
userInput.close();
}
else if(numPlayers == 2){
//Two Human Players
System.out.println("Two Players Selected");
validInput = true;
System.out.print("Enter Player One Name: ");
//Initialize Player 1
String p0_name = userInput.next();
Player Human1 = new Player(p0_name,0,false);
this.setPlayer0(Human1);
//Initialize Player 2
System.out.print("Enter Player Two Name: ");
String p1_name = userInput.next();
Player Human2 = new Player(p1_name,0,false);
this.setPlayer1(Human2);
userInput.close();
}
else {
System.out.println("Error, Player 1 Not set!");
userInput.close();
}
}while(!validInput);
}
(当我测试它时,我总是输入2)我尝试删除do-while循环,但这并没有解决问题。谢谢。
如果可以使用一个扫描仪从System.in读取整个应用程序,效果会更好
关闭接受播放器的扫描器将关闭InputStream,这将导致此NoSuChelmentException。如果您可以定义一个扫描器,并在接受输入的两种情况下都使用它,效果会更好
我是这样编译它们的: 确切的错误是这样的:
嗨,我正在编写一个程序,它使用Scanner从用户那里获取输入,然后使用布尔方法检查输入的长度是否不超过六个字符。问题是,如果长度小于六个,我使用了while循环来不断请求输入;但是在第一次错误输入后,如果你插入一串六个字母或更长的字符串,循环仍然会继续。这是程序: 谢谢
我想让用户输入一个String和四个整数值,如果用户输入的类型不匹配,我想让程序继续要求用户输入整数值,为什么代码会一直循环,如果用户插入了错误的类型,永远不会等待用户输入?
实时扫描可根据 Burp 的子工具中的请求和响应自动执行一些扫描操作。 您可以使用实时扫描来审计漏洞, 或是吧观察到的资源添加到 Burp 的 Target 工具的站点地图(Site map) 实时扫描配置 实时扫描需要配置以下内容才可以进行使用: 工具范围 - 您可以选择要检查其流量的工具,以选择由实时扫描处理的项目。 URL范围 - 您可以根据URL来定义实时扫描处理的项目。 您可以选择包含所
但是在输入序列之后,我们必须键入一个非整数字符并按“Enter”来终止扫描程序并执行“for”循环。有没有什么方法我们不必键入一个非整数字符来终止扫描仪?
当我尝试使用javac在windows命令提示符中编译程序时,我得到以下错误消息: 我做错了什么?