当我运行下面的代码:扫描器无法读取我的输入
类Startup
(由main()
叫):
import java.util.ArrayList;
public class Startup {
public void start() {
// Build rooms
final int WIDTH = 2;
final int HEIGHT = 2;
Room[][] room = new Room[WIDTH][HEIGHT];
Rooms.build(room, WIDTH, HEIGHT);
int x = 0;
int y = 0;
// Print starting room description
Rooms.print(room, x, y);
// Start game loop
boolean playing = true;
while (playing) {
// Get user input
String input = Input.getInput();
System.out.println(input);
// Movement commands
if (input.equals("n")) {
if (y > 0) {
y--;
Rooms.print(room, x, y);
} else {
System.out.println("You can't go that way.");
}
}
}
}
}
类Input
:
import java.util.Scanner;
public class Input {
public static String getInput() {
System.out.print("> ");
try(Scanner in = new Scanner(System.in)) {
String input = in.nextLine();
input.toLowerCase();
return input;
}
}
}
我总是会得到这个NoSuchElementException
:
java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at Input.getInput(Input.java:11)
at Startup.start(Startup.java:36)
at Driver.main(Driver.java:11)
如果start()
中的移动命令部分被移除,则一切正常。但是当这部分被包括在内时,这个例外总是被调用,导致我认为它有什么问题。但我的问题是:怎么了?
您是否真的输入了任何数据?请注意,如果你想小写输入,你应该做'input = input.toLowerCase();'。目前你的代码没有这样做。 –