[Java] Schleife funzt net

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Pobe, 12. November 2009 .

Schlagworte:
  1. 12. November 2009
    Schleife funzt net

    Hi Leute!
    Ich soll nen Algo coden, bei dem ich eine Zeichenreihe mit der Tastatur einlesen kann und diese Zeichenreihe anschließend wieder in der ASCII Schreibweise ausgegeben wird. Beendet soll die Schleife werden, wenn ich die leere Zeichenreihe eingebe. Funktioniert, bis auf die Schleife, wär cool, wenn da mal jemand drüber schauen kann.

    greetz
    Pobe

    Spoiler
    class Aufgabe2 {
    public static void main (String [] args) {
    String s,t ;
    do {
    System.out.println ("Geben sie eine beliebige Zeichenreihe ein:") ;
    s = Eingabe.readString () ;
    t = "" ;
    int laenge = s.length () ;

    while ( laenge > 0) {
    laenge-- ;


    t = s.codePointAt (laenge) +" " +t ;


    }
    System.out.println (t +"\n") ;

    } while ( s != "") ;
    }
    }
     
  2. 12. November 2009
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Schleife funzt net

    Ist von meinem prof. Ich selbst kann se net öffnen...

    https://www.xup.in/dl,20972489/Eingabe.class/
     
  3. 12. November 2009
    AW: Schleife funzt net

    was genau funktioniert net?
    Habs ohne einlesen gemacht, die do while schleife auskommentiert und nen festen String genommen.
    Aber sollte ja eigentlich keinen unterschied machen?

    also wo is das problem?
     
  4. 12. November 2009
    AW: Schleife funzt net

    ich kann ständig zeichenreihen eingeben, aber wenn ich die leere Zeichenreihe eingebe, sprich nur Enter drücke, bricht die Schleife nicht ab!
     
  5. 13. November 2009
    AW: Schleife funzt net

    Dann schmeiß doch mal den Debugger an, und schau nach was die Eingabe-Klasse einließt - bzw. zurückgibt, wenn du eine (für dich) leere Zeichenkette eingibst und ENTER drückst.

    Ich tippe auf mindestens ein Zeichen (ENTER).

    - - -
    Tanya
     
  6. 13. November 2009
    AW: Schleife funzt net

    ich würde mir da ne eigene methode schreiben um zu testen ob "s" leer ist.

    Code:
    class Aufgabe2 {
     public static void main (String [] args) {
     String s,t ;
     do {
     System.out.println ("Geben sie eine beliebige Zeichenreihe ein:") ;
     s = Eingabe.readString () ;
     
     //prüfen ob die eingabe leer ist, wenn ja: ende
     if(Aufgabe2.empty(s))
     break;
     
     t = "" ;
     int laenge = s.length () ;
    
     while ( laenge > 0) {
     laenge-- ;
    
    
     t = s.codePointAt (laenge) +" " +t ;
    
    
     }
     System.out.println (t +"\n") ;
    
     } while(true); // endlosschleife: läuft solange bis sie durch "break" beendet wird
     }
     
     /**
     * prüft ob ein string leer ist bzw. nur zeichen enthält die nicht sichtbar wären
     *
     * @param String str der zu prüfende string
     * @return Boolean true => leer, false => nicht leer
     */
     protected static boolean empty(String str)
     {
     int len = str.length();
     for_loop: for(int i = 0; i < len; ++i) {
     switch(s.charAt(i)) {
     case '\n':
     case '\t':
     case '\r':
     case ' ':
     continue for_loop;
     }
     
     return false; //mindestens ein zeichen = nicht leer
     }
     
     return true;
     }
    }
    habs ned durch nen compiler gejagt, kann dir also ned sagen ob 100% funktioniert, aber du siehst ja meinen gedankengang.
     
  7. 13. November 2009
    AW: Schleife funzt net

    ACHSO

    na sag das doch gleich, is doch klar warum er da nicht abbricht!!!!

    du kannst Strings nicht miteinander vergleichen.
    Okay du kannst schon, aber es liefert dir nicht das gewünschte ergebnis

    Wenn du wirklich abbrechen willst, wenn kein Text drinn steht solltest du eventuell so abfragen:

    } while ( s.length()>0)

    oder
    } while (!s.equals(""))

    oder s.equalsIgnoreCase je nachdem was man überprüft
    hoffe das hilft


    edit:
    Galileo Computing :: Java ist auch eine Insel - index

    hier kann man lesen warums net geht...zumindest grob angeschnitten
     
  8. 17. November 2009
    AW: Schleife funzt net

    danke für die Vorschläge... bws sind raus.

    es hat aber genügt in die while schleife t statt s zu schreiben. weil der sting t nicht verändert wird, wenn die Stringlänge von s 0 ist.

    greetz
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.