Java 用扫描仪读取单个字符

Java 用扫描仪读取单个字符,java,java.util.scanner,Java,Java.util.scanner,我想在Java程序中输入char类型的单个字符。即使用户输入多个字符,也应该只使用第一个字符。我该怎么做?在扫描器类的帮助下可以吗?有什么问题吗 scanner.next().charAt(0) 或者,如果您不想next()返回任何额外的内容,这里有另一个想法: scanner.useDelimiter("") 现在scanner.next()应该返回一个字符串,您可以根据需要使用.charAt(0)。有什么问题吗 scanner.next().charAt(0) 或者,如果您不想ne

我想在Java程序中输入
char
类型的单个字符。即使用户输入多个字符,也应该只使用第一个字符。我该怎么做?在
扫描器
类的帮助下可以吗?

有什么问题吗

scanner.next().charAt(0)

或者,如果您不想
next()
返回任何额外的内容,这里有另一个想法:

scanner.useDelimiter("")
现在
scanner.next()
应该返回一个字符串,您可以根据需要使用
.charAt(0)

有什么问题吗

scanner.next().charAt(0)

或者,如果您不想
next()
返回任何额外的内容,这里有另一个想法:

scanner.useDelimiter("")

现在
scanner.next()
应该返回单个字符串,您可以根据需要使用
.charAt(0)

要使用
scanner
中的单个字符,您可以使用:

char ch = scanner.findInLine(".").charAt(0);

要使用
扫描仪中的单个字符,您可以使用:

char ch = scanner.findInLine(".").charAt(0);

有两种方法可以做到这一点:

char c = scanner.nextLine().charAt(0);
将读取第一个可用行并提取第一个字符,或

try {
    char c = (char) System.in.read();
} catch (IOException e) {
    e.printStackTrace();
}

它将读取第一行中的第一个
字节
,并将其转换为
字符
有两种方法:

char c = scanner.nextLine().charAt(0);
将读取第一个可用行并提取第一个字符,或

try {
    char c = (char) System.in.read();
} catch (IOException e) {
    e.printStackTrace();
}

它将读取第一行中的第一个
字节
,并将其转换为
字符

的可能副本。建议使用扫描仪读取一个
byte
不能覆盖所有可能的字符。@DaftPunk
Scanner
只读取
String
s,因此我可以直接提取
char
。如果您尝试使用
nextShort()
您将获得
NumberFormatException
。如果您正在谈论使用
System.in.read()
来读取一个短字符而不是一个字节,那么您不能,这只能读取一个字节。我的意思是读取一个字节,LS-8,然后读取第二位并将它们相加。它产生一个短字符,然后您将其转换为一个字节。使用扫描仪,建议读取
短字符
byte
不能覆盖所有可能的字符。@DaftPunk
Scanner
只读取
String
s,因此我可以直接提取
char
。如果您尝试使用
nextShort()
您将获得
NumberFormatException
。如果您正在谈论使用
System.in.read()
来读取一个短字符而不是一个字节,那么您不能,这只能读取一个字节。我的意思是读取一个字节,LS-8,然后读取第二位并将它们相加。它产生一个短字符,然后转换为一个字节。