在Java中读取单个字符

时间:2010-06-15 07:35:44

标签: java

如何从键盘输入char?

8 个答案:

答案 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");
}

信用: tutorialspoint.com

另请参阅: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");
  }
 }
}