2010-06-15 5 views
20

Как можно ввести символ на Java с клавиатуры?Чтение одного символа в Java

+0

Дублирование? - http://stackoverflow.com/questions/811851/how-do-i-read-input-character-by-character-in-java –

+0

Почему вы начинаете каждое имя вопроса с «вопроса о»? Это избыточно. –

ответ

22

Вы можете либо просмотреть всю строку:

Scanner s = new Scanner(System.in); 
String str = s.nextLine(); 

Или вы можете прочитать один char, учитывая вы знаете, какую кодировку вы имеете дело с:

char c = (char) System.in.read(); 
+4

'char c = (char) System.in.read();' (выдача байта из системного кодирования в UTF-16) будет работать, только если символы имеют одинаковые значения в обоих кодировках; это обычно работает только для очень небольшого диапазона символов. Использование «Сканера» является более надежным. – McDowell

+0

@McDowell - без сомнения. –

+4

'System.in.read()' может блокироваться до тех пор, пока пользователь не наберет возврат каретки (по крайней мере, в Windows) –

-2

Может быть, вы могли бы попробовать это код:

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"); 
    } 
} 
} 
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* как разделитель, который является регулярным выражением для «нулевых или более пробельных символов». Это пропускает пробелы и т. Д. На входе, поэтому вы получаете только символы без пробелов, по одному за раз.

13

Вы можете использовать сканер как так:

Scanner s= new Scanner(System.in); 
char x = s.next().charAt(0); 

С помощью функции Шара Вы можете получить значение первого символа без использования внешнего литья.

1

я нашел этот способ работал хорошо:

{ 
    char [] a; 
    String temp; 
    Scanner keyboard = new Scanner(System.in); 
    System.out.println("please give the first integer :"); 
    temp=keyboard.next(); 
    a=temp.toCharArray(); 
    } 

вы также можете получить индивидуальные один с String.charAt()

Смежные вопросы