2010-04-08 12 views

Odpowiedz

20

Aby uzyskać char z Scanner, można użyć metody findInLine.

Scanner sc = new Scanner("abc"); 
    char ch = sc.findInLine(".").charAt(0); 
    System.out.println(ch); // prints "a" 
    System.out.println(sc.next()); // prints "bc" 

Jeśli potrzebujesz kilka char od A Scanner, to może być wygodniej (być może tymczasowo) zmienić separator do pustego łańcucha. Spowoduje to, że next() zwraca ciąg znaków długości 1 za każdym razem.

Scanner sc = new Scanner("abc"); 
    sc.useDelimiter(""); 
    while (sc.hasNext()) { 
     System.out.println(sc.next()); 
    } // prints "a", "b", "c" 
+0

To ma trochę więcej sensu, dziękuję – bizarrechaos

+0

@poly: domyślny Delimiter to ('" "') ...? jak to ustawić? czy to jest sugerowany sposób -zasilanie, ponieważ ten jest piekło łatwe, to wszystkie inne dane rozwiązania na SO !! – NoobEditor

+0

'findInLine (". ")' Nie będzie pasowało do nowych linii. To drugie podejście. – user3669782

4

Można użyć Console API (które pojawiło się w Javie 6) w następujący sposób:

Console cons = System.console(); 
if(cons != null) { 
    char c = (char) cons.reader().read(); // Checking for EOF omitted 
    ... 
} 

Jeśli wystarczy jeden wiersz nie musisz nawet przechodzić przez obiekt czytnika:

String s = cons.readLine(); 
+0

Pozdrowienia dla szybkiej odpowiedzi – bizarrechaos

2

Klasa Java's Scanner nie ma wbudowanej metody odczytu ze skanera znak po znaku.

http://java.sun.com/javase/6/docs/api/java/util/Scanner.html

Należy jednak nadal możliwe, aby pobrać poszczególne znaki ze skanera następująco:

Scanner sc: 

char c = sc.findInLine(".").charAt(0); 

I można go używać do pobierania każdy znak w skanerze tak:

while(sc.hasNext()){ 
    char c = sc.findInLine(".").charAt(0); 
    System.out.println(c); //to print out every char in the scanner 
} 

Metoda findInLine() przeszukuje skaner i zwraca pierwszy ciąg zgodny z wyrażeniem regularnym, które podałeś to.

0
Console cons = System.console(); 

Powyższa linia kodu tworzy minusy jako odniesienie zerowe. Kod i wyjścia są podane poniżej:

Console cons = System.console(); 
if (cons != null) { 
    System.out.println("Enter single character: "); 
    char c = (char) cons.reader().read(); 
    System.out.println(c); 
}else{ 
    System.out.println(cons); 
} 

wyjściowa:

zerowy

kod był testowany na MacBook Pro z wersji Java "1.6.0_37"

0

sc .next(). charat (0) ......... to metoda wprowadzania znaku przez użytkownika w oparciu o liczbę wprowadzoną w czasie wykonywania

przykładem. sc.next() charAt (2) ------------ >>>>>>>>

0
Scanner sc = new Scanner (System.in) 
char c = sc.next().trim().charAt(0); 
+1

Proszę dodać objaśnienie do kodu. Co ta odpowiedź dodaje do już istniejących i akceptowanych odpowiedzi? – Raidri

Powiązane problemy