1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

equals leerer string

  • Krackmoe
  • 3. Dezember 2007 um 21:43
  • Unerledigt
  • Krackmoe
    5
    Krackmoe
    Mitglied
    Punkte
    260
    Beiträge
    36
    • 3. Dezember 2007 um 21:43
    • #1

    http://paste-it.net/4981

    Ich möchte abfragen mit if ( antwort.equals("")) {
    break;
    }

    Wenn ein NICHTS eingegeben wird, soll er abbrechen. Das tut er mir aber nicht!?

  • Horrendus
    7
    Horrendus
    Mitglied
    Punkte
    520
    Beiträge
    92
    • 3. Dezember 2007 um 21:52
    • #2

    Naja das break würde in diesem Fall eher nur das if beenden ... in dem aber ehh nix drinnen steht.

    Wenn du das ganze Programm beenden willst (und das auf paste-it.net nicht alles ist) musst es mit einer Exception machen.

    Aber wenn es so ist wie auf dem Link kommt nach dem if ehh nichtsmehr (außer diversen weiteren if-else) und daher beendet sich das Programm danach ehh.

    lg

  • Krackmoe
    5
    Krackmoe
    Mitglied
    Punkte
    260
    Beiträge
    36
    • 3. Dezember 2007 um 22:06
    • #3

    Das Programm beendet sich leider nie!?

    Wenn ich nichts eingebe, dann geht er mir immer nur eine Zeile weiter runter.. und wenn ich dann wieder einen Namen eingebe, kommt halt wieder die Namensausgabe...

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 3. Dezember 2007 um 22:12
    • #4
    Zitat von Horrendus

    Naja das break würde in diesem Fall eher nur das if beenden ... in dem aber ehh nix drinnen steht.


    Nee das stimmt schon so. break beendet keine Bedingungen sondern nur Schleifen: http://java.sun.com/docs/books/tut…lts/branch.html ;

    Zitat von Krackmoe


    Wenn ein NICHTS eingegeben wird, soll er abbrechen. Das tut er mir aber nicht!?

    Wie bitte gibt man denn ein NICHTS ein? :wave: Wenn Du RETURN drueckst, dann gibst Du ja zumindest mal einen Zeilenumbruch ein.

    lg, Benjamin Ferrari, bookworm.at

  • [fl]Quel`Tos
    12
    [fl]Quel`Tos
    Mitglied
    Reaktionen
    14
    Punkte
    1.384
    Beiträge
    262
    • 3. Dezember 2007 um 22:19
    • #5

    Horrendus: Hehe.. jeder deiner 3 Sätze ist falsch :)

    Krackmoe:
    Schau mal hier (ist übrigens immer ein guter Ort zum Nachlesen :winking_face: ): "A Scanner breaks its input into tokens using a delimiter pattern, which by default matches whitespace."

    Der Scanner macht für deinen Zweck etwas zu viel, du willst ja eigentlich wirklich nur das Klump einlesen. Was du brauchst ist eher etwas in der Art:

    Code
    BufferedReader in = 
        new BufferedReader(new InputStreamReader(System.in));
    
    
    while(true) {
        try {
            antwort = in.readLine();
        } catch (Exception e) {
            System.out.println("Reading failed");
        }
    
    
    ...
    Alles anzeigen

    Let us be thankful we have commerce. Buy more. Buy more now. Buy. And be happy.

  • maciek
    16
    maciek
    Mitglied
    Punkte
    2.805
    Beiträge
    434
    • 5. Dezember 2007 um 11:04
    • #6

    zu der Erkennung von "nichts" ist glaub ich eh schon genug gesagt worden. Ich könnte empfehlen, die whitespaces zu trimmen, und zwar mit trim(). Wenn Du tatsächlich die gesamte methode abbrechen möchtest, die ja void ist, musst Du das break, gegen return austauschen. Außerdem würde ich davor zur Sicherheit noch auf null checken, also

    Zitat von Krackmoe

    http://paste-it.net/4981
    if ( antwort.equals("")) {
    break;
    }

    Code
    if (antwort == null || antwort.trim().equals("")) {
       return;
    }

    *** Make it idiot proof, and someone will build a better idiot. ***

  • tosh
    6
    tosh
    Mitglied
    Punkte
    375
    Beiträge
    73
    • 9. Dezember 2007 um 11:40
    • #7

    [fl]Quel`Tos hat schon auf die java API von Scanner veriwesen.

    die Scanner klasse bietet netterweise eine instanzmethode die boolean ist und sich "hasNext()" nennt. solange noch eine eingabe kommt (sprich: kein EOF gesendet wird) gibt die methode true zurück. eignet sich daher recht gut als bedingung für eine while schleife.

    tosh.at|huntu.at|opentu.net { die realität ist dort wo der pizzamann herkommt … }

  • blackx_zero
    3
    blackx_zero
    Mitglied
    Reaktionen
    8
    Punkte
    93
    Beiträge
    13
    • 21. Dezember 2007 um 12:36
    • #8

    maciek das überprüfen auf null kann man elegant umgehen, indem man das ganze so schreibt:

    Code
    if ("".equals(....)) { }

    "In der Informatik geht es genau so wenig um Computer, wie in der Astronomie um Teleskope." - Edsger Wybe Dijkstra

  • maciek
    16
    maciek
    Mitglied
    Punkte
    2.805
    Beiträge
    434
    • 22. Dezember 2007 um 01:31
    • #9
    Zitat von blackx_zero

    maciek das überprüfen auf null kann man elegant umgehen, indem man das ganze so schreibt:

    Code
    if ("".equals(....)) { }


    das stimmt, allerdings ist da die Möglichkeit des " ", die ich mit trim() abfangen würde nicht berücksichtigt ...

    *** Make it idiot proof, and someone will build a better idiot. ***

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern