目前正在运行JUnit
测试,我不断收到上述错误。我在我的班级中声明了一个公共的静态扫描程序,然后从包含测试类的不同包中访问它:
以下代码(在ClassA中)将继续循环,直到用户输入正确的输入。
public static Scanner sc;
public boolean methodInClass() {
sc = new Scanner(System.in);
for (; ; ) {
for (int i = 0; i < 10; i++) {
System.out.println("Please enter character. Enter A/B/C/D");
char guess = sc.next().charAt(0);
if (!correct) {
System.out.println("Please enter a new guess");
guess = sc.next().charAt(0);
}
///rest of code
在测试课程中:
这是@Test方法,并使用以下行来模拟扫描程序:
String input = "L\nL\nD\nU\nA\n";
System.setIn(new java.io.ByteArrayInputStream(input.getBytes()));
ClassA.sc = new Scanner(System.in); //should stop at A which is correct input
答案 0 :(得分:0)
你永远不会将正确的值更改为TRUE,因此它会检查所有5个leters,trys取6,然后崩溃。 之后
char guess = sc.next().charAt(0);
添加
correct = guess=='A';
另外,你的自行车顶部永远不会结束。所以你可能想在某处添加休息。
编辑:当正确== false时,您正在阅读第1个,第3个,第5个符号。可能你并不打算这样做。