如何从键盘输入char?
答案 0 :(得分:24)
您可以扫描整行:
Scanner s = new Scanner(System.in);
String str = s.nextLine();
或者你可以阅读一个char
,因为你知道你正在处理的是什么编码:
char c = (char) System.in.read();
答案 1 :(得分:14)
您可以像这样使用扫描仪:
Scanner s= new Scanner(System.in);
char x = s.next().charAt(0);
通过使用charAt函数,您可以在不使用外部强制转换的情况下获取第一个char的值。
答案 2 :(得分:2)
使用通常建议的nextline和System.in.read要求用户在键入字符后按Enter键。但是,正在寻找此问题答案的人们,可能也有兴趣直接响应控制台中的按键!
我找到了使用jline3的解决方案,其中我们首先将终端更改为rawmode以直接响应键,然后等待下一个输入的字符:
var terminal = TerminalBuilder.terminal()
terminal.enterRawMode()
var reader = terminal.reader()
var c = reader.read()
<dependency>
<groupId>org.jline</groupId>
<artifactId>jline</artifactId>
<version>3.12.3</version>
</dependency>
答案 3 :(得分:1)
您可以使用Scanner
。目前尚不清楚您的具体要求是什么,但这里有一个应该说明的例子:
Scanner sc = new Scanner(System.in).useDelimiter("\\s*");
while (!sc.hasNext("z")) {
char ch = sc.next().charAt(0);
System.out.print("[" + ch + "] ");
}
如果您提供此输入:
123 a b c x y z
输出结果为:
[1] [2] [3] [a] [b] [c] [x] [y]
所以这里发生的是Scanner
使用\s*
作为分隔符,它是“零个或多个空白字符”的正则表达式。这会在输入中跳过空格等,因此您一次只能获得一个非空白字符。
答案 4 :(得分:1)
我发现这种方式很好用:
newname
你也可以使用String.charAt()
获得个人答案 5 :(得分:0)
这是带有静态函数“ chr()”的类“ getJ”。该函数读取一个字符。
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
class getJ {
static char chr()throws IOException{
BufferedReader bufferReader =new BufferedReader(new InputStreamReader(System.in));
return bufferReader.readLine().charAt(0);
}
}
要读取字符,请使用以下命令:
anyFunc()throws IOException{
...
...
char c=getJ.chr();
}
由于'chr()'是静态的,因此您不必通过'new'创建'getJ';我的意思是 您无需这样做:
getJ ob = new getJ;
c=ob.chr();
您应该记得在函数的头部添加“ throws IOException”。如果不可能,请按以下方式使用try / catch:
anyFunc(){// if it's impossible to add 'throws IOException' here
...
try
{
char c=getJ.chr(); //reads a char into c
}
catch(IOException e)
{
System.out.println("IOException has been caught");
}
另请参阅:geeksforgeeks。
答案 6 :(得分:-1)
... char ch; ... ch = scan.next()。charAt(0); 。 。 这是获得角色的简单方法。
答案 7 :(得分:-3)
也许你可以试试这段代码:
import java.io.*;
public class Test
{
public static void main(String[] args)
{
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String userInput = in.readLine();
System.out.println("\n\nUser entered -> " + userInput);
}
catch(IOException e)
{
System.out.println("IOException has been caught");
}
}
}