wak*_*fus 4 java java.util.scanner
我试图从Java 6中的键盘输入文本输入.我是该语言的新手,每当我运行以下代码时,我都会收到此错误:
package test1;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
boolean quit = false;
while (!quit){
Scanner keyIn;
String c = "x";
while (c != "y" && c != "n") {
keyIn = new Scanner(System.in);
c = keyIn.next();
keyIn.close();
}
if (c == "n")
quit = true;
}
}
}
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:838)
at java.util.Scanner.next(Scanner.java:1347)
at test1.Test.main(Test.java:11)
Run Code Online (Sandbox Code Playgroud)
我错误地使用了next()方法吗?我认为它会等待用户输入,但它看起来不是,并抛出异常说扫描仪中没有任何东西.
异常的原因是您keyIn.close()在使用扫描仪一次后打电话,这不仅会关闭扫描仪,Scanner还会关闭扫描仪System.in.下一次迭代你创建一个新的Scanner,立即爆炸,因为System.in现在已经关闭.要解决这个问题,你应该做的只是在进入while循环之前创建一次扫描程序,并close()完全跳过调用,因为你不想关闭System.in.
修复程序后,由于==和!=字符串比较,程序仍然无法正常工作.在比较Java中的字符串时,您必须使用它equals()来比较字符串内容.当您使用==并且!=您正在比较对象引用时,因此这些比较将始终在您的代码中返回false.始终用于equals()比较字符串.
while (!quit){
Scanner keyIn = new Scanner(System.in);
String c = "x";
while (!c.equals("y") && !c.equals("n")) {
c = keyIn.next();
}
if (c.equals("n"))
quit = true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34666 次 |
| 最近记录: |