tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
274
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Mon5tar Tutorials.de Gastzugang
    Guten Tag zusammen,

    hab hier ein Problem und zwar greift die while-schleife nicht so wie sie soll... nachdem die if-abfrage fertig ist, ist die variable fehler wenn man y oder Y wählt immer noch 1... und in der while schleife steht das wenn sie 1 ist die befehle durchlaufen soll...
    hier der code:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    
    import java.io.*;
    public class note {
        public static void main (String argv[]) throws Exception
            {
                int note,fehler;
                String note_abfrage, abfr2;
                BufferedReader input = new BufferedReader (new InputStreamReader(System.in));
                System.out.println("Programmstart Note.java");
                System.out.println();
                fehler = 1;
                while (fehler == 1)
                {
     
                        System.out.print("Welche Note haben Sie bekommen? ");
                        note_abfrage = input.readLine();
                        note = Integer.parseInt(note_abfrage);
                        switch (note)
                                {
                                    case 1: System.out.println("Sehr gut *_*"); break;
                                    case 2: System.out.println("Gut gut =D"); break;
                                    case 3: System.out.println("Befriedigend =]"); break;
                                    case 4: System.out.println("Ausreichend =/"); break;
                                    case 5: System.out.println("Mangelhaft -.-"); break;
                                    case 6: System.out.println("Ungenügend o_O"); fehler = 0; break;
                                    default: System.out.println("Bitte geben Sie eine Zahl zwichen 1 und 6 an");
                                }
                        if (fehler == 1)
                            {
                                System.out.print("Wollen Sie das Programm wiederholen? (Y)es or (N)o? ");
                                abfr2 = input.readLine();
                                if ( abfr2 == "Y")
                                    {
     
                                    }
                                else
                                    {
                                        if ( abfr2 =="y")
                                            {
     
                                            }
                                        else
                                            {
                                                fehler = 0;
                                            }
                                    }
     
     
                            }//if fehler ==1
            }//while
     
        System.out.println();
        System.out.println("Programmende Note.java");
        }//void
     
    }//public class
    könt ihr mir büdde helfen?
     

  2. #2
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,

    das liegt daran, dass du die String falsch vergleichst.
    Mit == kannst du nur schauen ob es sich um das gleiche Object handelt. Wenn du den Inhalt von Strings vergleichen möchtest, musst du das mit equals machen.

    Code :
    1
    2
    
    String s = "Hallo";
    System.out.println(s.equals("Hallo"));

    Gruß

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  3. #3
    Matt297 Matt297 ist offline Mitglied Gold
    Registriert seit
    Oct 2008
    Beiträge
    180
    Dein Problem liegt in den Zeilen

    Code java:
    1
    
    if ( abfr2 == "Y")
    und
    Code java:
    1
    
    if ( abfr2 == "y")

    Der == - Operator überprüft, ob es sich auf beiden Seiten um die selben Objekte handelt, das wird aber nie der Fall sein, und daher geht das Programm immer in den zweiten else-Bereich.
    Korrekt ist, wenn man nur überprüfen möchte, ob der Text gleich ist, die Funktion "equals" zu nehmen, in deinem Fall wäre es sogar eleganter die Funktion "equalsIgnoreCase" zu verwenden, dann sparst du die die zweite If-Abfrage.
    Das würde dann so aussehen:

    Code java:
    1
    2
    3
    4
    5
    
    if (abfr2.equalsIgnoreCase("y")) {
      //tu irgendwas
    } else {
      fehler = 0;
    }
    Wenn du in dem If-Teil nichts weiter tun möchtest(wie es momentan der Fall ist) kannst du den else Teil auch weglassen und die Bedingung negieren, also folgendermaßen:
    Code java:
    1
    2
    3
    
    if (!abfr2.equalsIgnoreCase("y")) {
      fehler = 0;
    }
    Geändert von Matt297 (06.06.10 um 19:43 Uhr)
     

  4. #4
    Mon5tar Tutorials.de Gastzugang
    Okii vielen dank =D

    hat super funktioniert das equals sowie equalsIgnoreCase ihr seid spitze =D
     

Ähnliche Themen

  1. [Lua/C++] Anfängerproblem
    Von badday im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 22.02.10, 18:12
  2. Anfängerproblem
    Von nex_m im Forum VisualStudio & MFC
    Antworten: 4
    Letzter Beitrag: 02.01.07, 14:34
  3. Anfängerproblem
    Von pgd im Forum Cinema 4D
    Antworten: 12
    Letzter Beitrag: 30.01.06, 15:22
  4. Java anfängerproblem
    Von janosch im Forum Java
    Antworten: 2
    Letzter Beitrag: 09.04.03, 12:29
  5. Anfängerproblem?
    Von khaindar im Forum 3D Studio Max
    Antworten: 2
    Letzter Beitrag: 01.04.03, 16:43