我得到了下面的代码,但是在第一个循环之后,我的调试器给出了下面的错误,这很奇怪,我一直都是这样做的,但是它不再工作了,这很奇怪?!我一步一步地检查了一下,是不是开关命令后才停?
Exception in thread "main" java.lang.IllegalStateException: Scanner closed
at java.util.Scanner.ensureOpen(Unknown Source)
at java.util.Scanner.findWithinHorizon(Unknown Source)
at java.util.Scanner.nextLine(Unknown Source)
at Level.schleife(Level.java:35)
at Crawler.main(Crawler.java:23)
public boolean schleife() {
System.out.println("Das Spiel beginnt, bewege Dich mit der WASD Steuerung!");
Scanner eingabeMove = new Scanner(System.in);
tmpi = positioni;
tmpj = positionj;
while (true) {
String bewegung = eingabeMove.nextLine();
switch (bewegung) {
case "w": { // vorwärts
tmpi += 1;
if (actionResult()) {
positioni = tmpi;
break;
} else {
return false;
}
}
case "a": { // links
tmpj -= 1;
if (actionResult()) {
positionj = tmpj;
break;
} else {
return false;
}
}
case "s": { // rückwärts
tmpi -= 1;
if (actionResult()) {
positioni = tmpi;
break;
} else {
return false;
}
}
case "d": { // rechts
tmpj += 1;
if (actionResult()) {
positionj = tmpj;
break;
} else {
return false;
}
}
default: { // falsche Eingabe
System.out.println("Falsche Eingabe!");
continue;
}
}
eingabeMove.close();
}
}
不要在while
循环结束时调用eingabemove.close();
。您将导致扫描仪在第一个循环结束时无法操作。
因为循环总是以返回
结束,所以在这个schleife()
方法中关闭扫描器是没有意义的。
不过,您实际上不需要关闭扫描器,因为它包装system.in
,无论如何都不会关闭。鉴于这一事实,在schleife()
返回时,您可以简单地让eingabemove
超出范围。
如果您真的想关闭扫描器,您应该将eingabemove
作为参数传递给该方法,并从调用方法中关闭它。
public boolean schleife(Scanner eingabeMove) {
// use the scanner
}
呼叫代码:
Scanner eingabeMove = new Scanner(System.in);
schleife(eingabeMove);
eingabeMove.close();
问题内容: 我正在用Java从头开始编写RPG战斗系统,雄心勃勃吧?好吧,我遇到了麻烦。这是我的代码: 当它到达代码中的这一点时,我得到: 你会怎么做?说(战斗)(运行)(使用项) 线程“主”中的异常java.util.NoSuchElementException: 在Combat.turnChoice(Combat.java:23)的 java.util.Scanner.nextLine(Unk
这是我程序的主要方法。当调用nextLine()函数时,扫描器解析变量L而不是space时,我遇到了一个问题。不过,nextInt()可以按照预期工作。我的程序在试图用integer.parseint()函数解析空字符串时崩溃了。 第一个输入是指定将要进行的行数的整数,下面的输入是空格分隔的整数。 堆栈跟踪如下:
许多cPanel网络托管都附带此ClamAV病毒扫描程序功能,以防止您的服务器上的潜在威胁。 您可以对文件进行按需扫描,以查看它们是否感染了任何病毒。 ClamAV是一个开源的强大的防病毒软件,它使用其广泛的数据库来检测几种类型的潜在威胁,如病毒,特洛伊木马,恶意软件,恶意脚本等。 您可以使用防病毒扫描主目录的不同扇区。 要使用病毒扫描程序扫描您的帐户,请使用以下步骤。 Step 1 - 通过单击
问题内容: 我正在使用嵌套循环从字符串行(从文本文件)中提取数字,如下所示: 问题在于此代码将跳过所有空格,但是我也需要使用这些“空格”。那么可以返回空格还是我需要使用其他东西? 我的文本文件可能包含以下内容: 这些空白行各包含1条,这就是我需要返回的行。 问题答案: 使用扫描仪和方法,您将找到解决方案,因为这将使您能够捕获空白行或空白行。
问题内容: 我刚刚了解了Java的Scanner类,现在我想知道它如何与StringTokenizer和String.Split进行比较/竞争。我知道StringTokenizer和String.Split仅适用于字符串,那么为什么要对字符串使用扫描器?扫描仪是否仅打算一站式进行拆分? 问题答案: 他们本质上是课程的马。 设计用于需要解析字符串,提取不同类型数据的情况。它非常灵活,但是可以说它并没
本文向大家介绍Python端口扫描简单程序,包括了Python端口扫描简单程序的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Python端口扫描的实现代码,供大家参考,具体内容如下 获取本机的IP和端口号: PortScan.py 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
控制台:
问题内容: 我试图将我的应用程序中较大且经常使用的部分重构为单独的方法,以使其易于维护。 其中一些方法要求用户输入并进行输入验证,因此我使用了Scanner和System.in,但是当我关闭Scanner时,我也关闭了System.in。 所以我的问题是,我只能通过用CloseShieldInputStream屏蔽System.in来防止System.in关闭,还是应该开始将Scanner传递给方