从扫描器中获取一个字符输入
我试图找到一种方法,从键盘上获取一个 "字符 "输入。
我试着用。
Scanner reader = new Scanner(System.in);
char c = reader.nextChar();
这个方法不存在。
我试着把c'作为一个
字符串'。然而,这并不总是在任何情况下都有效,因为我从我的方法中调用的其他方法需要一个`字符'作为输入。因此,我必须找到一种方法,明确地将char作为输入。
有什么帮助吗?
112
3
你可以从
Scanner.next
中获取第一个字符。要消耗_完全_一个字符,你可以使用。
如果要消耗_严格意义上的一个字符,您可以使用。
没有API方法可以从扫描器中获得一个字符。你应该使用
scanner.next()
获得字符串,并对返回的字符串调用String.charAt(0)
方法。为了安全起见,你也可以先对字符串调用
trim()
,以删除任何空白。有三种方法来处理这个问题。
在扫描器上调用
next()
,并提取字符串的第一个字符(例如charAt(0)
)如果你想把这一行的其余部分读成字符,就在字符串的其余字符上进行迭代。 其他答案有这样的代码。使用
setDelimiter("")
来设置分隔符为空字符串。 这将导致next()
被标记为正好是一个字符的字符串。 所以你可以重复地调用next().charAt(0)
来迭代这些字符。 然后你可以将分隔符设置为原来的值,并继续以正常的方式进行扫描!使用阅读器API而不是扫描器API。 读取器.read()`方法提供了一个从输入流中读取的单个字符。 比如说。
当你通过 "System.in "从控制台读取时,输入通常由操作系统缓冲,只有在用户输入ENTER时才会释放给应用程序。 因此,如果你想让你的应用程序对单个键盘敲击做出反应,这是不可行的。 你需要做一些特定于操作系统的本地代码,在操作系统层面上关闭或解决控制台的行缓冲问题。
参考。