Ral*_*lph 112 java input char java.util.scanner
我试图找到一种char从键盘输入的方法.
我试过用:
Scanner reader = new Scanner(System.in);
char c = reader.nextChar();
Run Code Online (Sandbox Code Playgroud)
此方法不存在.
我试着把它c作为一个String.然而,它并不总是适用于所有情况,因为我从我的方法调用的另一种方法需要一个char输入.因此,我必须找到一种方法来明确地将char作为输入.
有帮助吗?
Rei*_*eus 154
你可以从第一个角色Scanner.next:
char c = reader.next().charAt(0);
Run Code Online (Sandbox Code Playgroud)
要使用恰好一个字符,您可以使用:
char c = reader.findInLine(".").charAt(0);
Run Code Online (Sandbox Code Playgroud)
要严格使用一个字符,您可以使用:
char c = reader.next(".").charAt(0);
Run Code Online (Sandbox Code Playgroud)
hoa*_*at4 50
设置扫描仪:
reader.useDelimiter("");
Run Code Online (Sandbox Code Playgroud)
之后reader.next()将返回单字符串.
Per*_*ror 16
没有API方法可以从扫描程序中获取字符.您应该在返回的String上获取String using scanner.next()和invoke String.charAt(0)方法.
Scanner reader = new Scanner(System.in);
char c = reader.next().charAt(0);
Run Code Online (Sandbox Code Playgroud)
为了安全地使用空格,您还可以首先调用trim()字符串来删除任何空格.
Scanner reader = new Scanner(System.in);
char c = reader.next().trim().charAt(0);
Run Code Online (Sandbox Code Playgroud)
Ste*_*n C 11
有三种方法可以解决这个问题:
调用next()扫描程序,并提取字符串的第一个字符(例如charAt(0))如果要将行的其余部分读作字符,请迭代字符串中的其余字符.其他答案都有这个代码.
用于setDelimiter("")将分隔符设置为空字符串.这将导致next()标记为正好一个字符长的字符串.那么你可以反复调用next().charAt(0)迭代字符.然后,您可以将分隔符设置为其原始值,并以正常方式继续扫描!
使用Reader API而不是Scanner API.该Reader.read()方法提供从输入流中读取的单个字符.例如:
Reader reader = new InputStreamReader(System.in);
int ch = reader.read();
if (ch != -1) { // check for EOF
// we have a character ...
}
Run Code Online (Sandbox Code Playgroud)当您从控制台通过读取时System.in,输入通常由操作系统缓冲,并且仅在用户键入ENTER时"释放"到应用程序.因此,如果您打算让应用程序响应各个键盘敲击,这是行不通的.您需要执行一些特定于操作系统的本机代码来关闭或解决操作系统级别的控制台的行缓冲.
参考:
您可以非常简单地解决“一次抓取键盘输入一个字符”的问题。不必全部使用扫描仪,也不必通过使用它来清除输入缓冲区作为副作用。
char c = (char)System.in.read();
Run Code Online (Sandbox Code Playgroud)
如果您所需要的只是与 C 语言“getChar()”函数相同的功能,那么这将非常有效。“System.in.read()”的最大优点是在您抓取每个字符后不会清除缓冲区。因此,如果您仍然需要所有用户输入,您仍然可以从输入缓冲区中获取其余部分。该"char c = scanner.next().charAt(0);"方式确实会抓取字符,但会清除缓冲区。
// Java program to read character without using Scanner
public class Main
{
public static void main(String[] args)
{
try {
String input = "";
// Grab the First char, also wait for user input if the buffer is empty.
// Think of it as working just like getChar() does in C.
char c = (char)System.in.read();
while(c != '\n') {
//<do your magic you need to do with the char here>
input += c; // <my simple magic>
//then grab the next char
c = (char)System.in.read();
}
//print back out all the users input
System.out.println(input);
} catch (Exception e){
System.out.println(e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
希望这有帮助,祝你好运!PS抱歉,我知道这是一篇较旧的帖子,但我希望我的回答带来新的见解,并可以帮助其他也有此问题的人。
| 归档时间: |
|
| 查看次数: |
886347 次 |
| 最近记录: |