gpt4 book ai didi

Java 扫描仪未找到线路,不等待用户输入

转载 作者:行者123 更新时间:2023-11-30 04:31:18 25 4
gpt4 key购买 nike

我在获取 Scanner 对象读取用户输入时遇到问题。我希望扫描仪读取用户输入并将输入保存到字节数组中。

如果我使用以下代码:

import java.util.Scanner;

public class ExamTaker {
public static void main(String[] args) {
// Variable Declaration
char[] studentTest = new char[20];

// Input Setup
Scanner keyboard = new Scanner(System.in);

// Take the test
for (int i = 0; i < studentTest.length; i++) {
System.out.print("\nAnswer " + (i+1) + " : ");
studentTest[i] = keyboard.nextLine().charAt(0); // The troubled line
}
}
}

我得到的异常错误如下:

Answer 1 : Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at ExamTaker.main(ExamTaker.java:14)

通过 Stack Overflow 和 Google 进行研究后,我采纳了将有问题的线路放入 try-catch 中的建议,如下所示:

// Take the test
for (int i = 0; i < studentTest.length; i++) {
System.out.print("\nAnswer " + (i+1) + " : ");
try {
studentTest[i] = keyboard.nextLine().charAt(0);
}
catch (Exception e) {
System.out.print("Exception found");
}
}

但是,这仍然不会产生所需的输出,因为我认为我使用 nextLine() 方法的方式存在问题。它只是在每个编号答案前面抛出“发现异常”文字。

我还尝试将 for 循环更改为 do-while 循环,并在没有到达行尾的情况下扔入 Keyboard.getChar() ,但无济于事。

在本例中,如何让用户输入一个字符串,其中我取第一个字符并将其分配给我的 char 数组?预先感谢您的帮助。

最佳答案

<强> Scanner#nextLine() 当没有找到行时抛出 NoSuchElementException ,您可能应该调用 Scanner#hasNextLine() 在调用 nextLine() 之前确保扫描仪中存在下一行。

 for (int i = 0; i < studentTest.length; i++) {
System.out.print("\nAnswer " + (i+1) + " : ");
if(keyboard.hasNextLine()){
studentTest[i] = keyboard.nextLine().charAt(0); // The troubled line
}
}

另外,我发现您只想从扫描仪获取用户输入,为什么不直接使用 Scanner#next()

for (int i = 0; i < studentTest.length; i++) {
System.out.print("\nAnswer " + (i+1) + " : ");
studentTest[i] = keyboard.next().charAt(0); // The troubled line
}

关于Java 扫描仪未找到线路,不等待用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14595227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com