System.in.read() wird übersprungen

Status
Nicht offen für weitere Antworten.

blood_on_ice

Mitglied
Guten Tag!

Hätte folgende Frage:

- Habe folgendes einfaches FTP-Programm mit edtFTPj für JAVA geschrieben:


Code:
    public static void doFTP(String host, String user, String password, String file){
        try
        {
            System.out.println("> connect to " + host + "\n");
            System.in.read();
            
            FTPClient ftp = null;
            ftp = new FTPClient();
            ftp.setRemoteHost(host);
            ftp.connect();
            ftp.login(user, password);
            
            System.out.println("\n" + "> set binary mode" + "\n");
            System.in.read();
            System.in.read();
            
            ftp.setConnectMode(FTPConnectMode.PASV);
            ftp.setType(FTPTransferType.BINARY);

            System.out.println("\n" + "> uploading " + file + "\n");
            System.in.read();
            System.in.read();
            
            ftp.put(file,file);
            
            System.out.println("\n" +  "> closing ftp connection" + "\n");
            System.in.read();
            System.in.read();

            ftp.quit();            
        }
        catch (Exception e) {
            System.out.println("Caught Error: " + e.getMessage());
        }
    }

Frage:

Wieso muss ich System.in.read() zweimal schreiben? Wenn ich es nur einmal schreibe, wird es übersprungen in der console?!? Komisch ist auch, dass es beim ersten System.in.read() noch funktioniert?

Danke für eure Hilfe!

Gruss,
Peter
 
kommt drauf an was du in der Konsole so tippst,
vielleicht wird ein Buchstabe oder gerade ein Zeilenumbruch in mehrere Zeichen umwandelt ("\r\n")?
gib doch mal aus, was die einzelnen System.in.read() so einlesen
 
SlaterB hat gesagt.:
kommt drauf an was du in der Konsole so tippst,
vielleicht wird ein Buchstabe oder gerade ein Zeilenumbruch in mehrere Zeichen umwandelt ("\r\n")?
gib doch mal aus, was die einzelnen System.in.read() so einlesen

hm ja das könnte das Problem sein...wenn ich auf der Tastatur die Enter-Taste drücke...gibt er immer 13 und 10 aus...wie mach ich das dann am besten, ohne zwei mal System.in.read() zu schreiben? Oder gibt es keine bessere Möglichkeit?

Ich brauche das Programm zur demonstration...Es soll immer warten, bis ich Enter drücke (dann einen Schritt weiter gehen)...

Danke schonmal,

Gruss,
Peter
 
Code:
public class Test2
{
    public static void main(String[] args)
        throws Exception
    {
        BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
        p(b.readLine());
        p("a: ");
        p(b.readLine());
        p("a: ");
        p(b.readLine());
        p("a: ");
        DataInputStream d = new DataInputStream(System.in);
        p(d.readChar());
        p("x: ");
        p(d.readChar());
        p("x: ");
        p(d.readChar());
        p("x: ");
        p(d.readChar());
        p("x: ");
    }


    public static void p(Object o)
    {
        String st = o.toString();
        PrintStream out = System.out;
        out.println(st);

    }

}
oder Scanner oder was es sonst noch so gibt
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben