Java anfängerproblem

M

Mon5tar

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:
Java:
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?
 
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:
String s = "Hallo";
System.out.println(s.equals("Hallo"));

Gruß

Sascha
 
Dein Problem liegt in den Zeilen

Java:
if ( abfr2 == "Y")
und
Java:
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:

Java:
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:
Java:
if (!abfr2.equalsIgnoreCase("y")) {
  fehler = 0;
}
 
Zuletzt bearbeitet:
Okii vielen dank =D

hat super funktioniert das equals sowie equalsIgnoreCase :) ihr seid spitze =D
 
Zurück