Metoda skanowania, aby uzyskać znak

Jaka jest metoda Scanner aby uzyskać char zwracaną przez klawiaturę w Javie.

Jak nextLine() dla String, nextInt() dla int, itd.

Author: skaffman, 2010-04-08

6 answers

Aby uzyskać char z Scanner, możesz 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 z Scanner, wtedy może być wygodniej (być może tymczasowo)zmienić ogranicznik na pusty łańcuch. Spowoduje to, że next() zwróci za każdym razem ciąg o długości-1.

    Scanner sc = new Scanner("abc");
    sc.useDelimiter("");
    while (sc.hasNext()) {
        System.out.println(sc.next());
    } // prints "a", "b", "c"
 20
Author: polygenelubricants,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-08 06:35:02

Możesz użyć API konsoli (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 potrzebujesz tylko jednej linii, nie musisz nawet przechodzić przez obiekt reader:

String s = cons.readLine();
 4
Author: Itay Maman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-08 05:58:10

Klasa Java Scanner nie posiada wbudowanej metody odczytu ze skanera znak po znaku.

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

Jednak nadal powinno być możliwe pobranie poszczególnych znaków ze skanera w następujący sposób:

Scanner sc:

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

I możesz go użyć, aby pobrać każdy znak w skanerze w następujący sposób:

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 łańcuch, który pasuje do podanego przez Ciebie wyrażenia regularnego.

 2
Author: eipxen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-08 06:31:46
Console cons = System.console();

Powyższa linia kodu tworzy cons jako odniesienie null. Kod i wyjście 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ście:

Null

Kod został przetestowany na MacBooku pro z wersją Javy "1.6.0_37"

 0
Author: Satish Singhal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-03 21:34:42

Sc. next (). charat(0).........jest metodą wprowadzania znaków przez użytkownika na podstawie liczby wprowadzonej w czasie wykonywania

Przykład: sc.next().charat(2)------------>>>>>>>>

 0
Author: user3178887,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-17 07:01:18
Scanner sc = new Scanner (System.in)
char c = sc.next().trim().charAt(0);
 0
Author: Teena Sachdeva,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-06 11:12:58