Für was ist diese Kommandozeile?



  • [java]import java.io.IOException;

    Programm ist viergewinnt,
    in dieser Klasse ermittle ich den eingegeben Zug, also in welche Röhre eingeworfern werden soll.
    Den schwarz markierten Teil versteh ich nicht... ist das nicht total überflüssig?

    public class Spieler {

    /**
    * Gibt eine gewonnen Meldung für den übergebenen Spieler aus
    *
    * @param spieler
    */

    public static void gewonnen( int spieler ) {
    System.out.println( "Gratulation Spieler " + spieler + " hat gewonnen" );
    }

    /**
    * Gibt eine "Säule-Voll"-Meldung aus
    */

    public static void saeuleVoll() {
    System.out.println( "Die gewählte säule ist voll.");
    }

    /**
    * Liest den nächsten Zug des Spielers von tastatur ein. Bei einer falschen eingabe wird
    * der Spieler zur erneuten Eingabe aufgefordert
    *
    * @param spieler
    * @return
    * @throws IOException
    */

    public static int readNextZug( int spieler ) throws IOException {

    char s;

    do {
    System.out.println( "Spieler " + spieler + ": Bitte geben Sie ihren Zug ein:" );

    /*
    * Name der Säule einlesen
    */

    s = (char) System.in.read();

    /*
    * Bis zum zeilenende alles überlesen
    */

    **char c = (char) System.in.read();

    while( c != '\n' ) {
    c = (char) System.in.read();**
    }

    if( s < 'A' || s > 'I' ) {
    System.out.println( "Ungültige eigabe." );
    }

    } while( s < 'A' || s > 'I' );

    return s - 'A';
    }

    /**
    * Testmethode welche das Einlesen von Zügen überprüft
    *
    * @param args
    * @throws IOException
    */
    public static void main(String[] args) throws IOException {
    readNextZug( 1 );
    readNextZug( 2 );

    }

    }[/java]



  • Der markierte Teil dient dazu den Rest der Eingabe zu ignorieren, falls mehr als ein Zeichen eingegeben wurde.



  • ja aber wirkt sich das irgendwie auf s aus?
    ist das nicht unabhängig von einander oder beeinflusst das die gesamte Eingabe?

    lg



  • versteh das immer noch nicht



  • Lösch doch mal die Zeilen und gib mehrere Zeichen auf einmal (also ohne Enter dazwischen) ein.



  • ok ok hab das mal an einem Beispielprogramm durchprobiert.
    Ich versteh trotzdem net so ganz, wie sich c auf s verhält.
    Das sind doch beides zwei Paar Stiefel?

    c macht sich doch unabhängig von s oder nicht?

    char s = (char) System.in.read();
    	while(s!='\n'){
    		s = (char) System.in.read();
    
    	}
    

    also s liest aus der Eingabe.
    und solange s nicht am Ende der Eingabe ist, ist s die Eingabe Oo



  • Ich weiß jetzt, das es z.B. von der Eingabe PAPA das erste P raustrennt aber wieso? 🙂



  • wenn ich die do while schleife wegnehm funtzt des ja auch... tilt



  • ok hab jetzt realisiert, dass der Eingabepuffer ausgelesen wird und das nicht behalten wird, was da drinn steht.

    danke, kann close 😉

    lg und btw WM :schland:


Anmelden zum Antworten