Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo Leute,
ich muss ein Programm schreiben in dem Schulnoten ausgegeben werden und das Programm erst beendet wird, wenn ich per Tasteneingabe "N" eingebe. Die noten werden soweit ohne Probleme ausgegeben, jedoch muss sich das ja eigentlich stetig wiederholen solange ich kein N drücke. ich würde hier die Do-while schleife benutzen, ich weiß jedoch nicht wie. Habt ihr Ideen?
package Woche2;
import java.util.Scanner;
public class aufgabe5auch {
static int N;
static int Note;
public static void main(String[] args) {
System.out.println("Bitte deine gewünschte Note von 1-6 eingeben!");
Scanner scaner = new Scanner(System.in);
Note = scaner.nextInt();
switch (Note) {
case 1:
System.out.println("Note= Sehr gut");
break;
case 2:
System.out.println("Note= gut");
break;
case 3:
System.out.println("Note= befriedigend");
break;
case 4:
System.out.println("Note= ausreichend");
break;
case 5:
System.out.println("Note= mangelhaft");
break;
case 6:
System.out.println("Note= ausreichend");
break;
default:
System.out.println(
"Deine eingegebene Zahlt ist nicht zwischen 1 und 6. Bitte beim nächsten mal neu versuchen!");
Mal als ersten Tipp: wenn eine Eingabe sowohl Buchstaben als auch Zahlen enthalten kann, dann ist es falsch, mittels nextInt() grundsätzlich von einer Zahl auszugehen.
Hi!
Vorab: Es würde sehr helfen, wenn du deinen Code in Code-Tags setzt. Dann hat man beim lesen im Browser Syntax Highlighting. Ferner solltest du deinen Code unbedingt einrücken und dich an die Namenskonventionen von Java halten. Ich schätze das hattet ihr sicher schon in Woche 1 ;-)
Zu deinem Problem:
Die Do-While-Schleife ist ein guter Ansatz. Allerdings sind switch-Blöcke so eine Sache. Einfach einen char-Ausdruck innerhalb von einem int-Block mitzuprüfen, ist nicht drinnen. Jetzt gibt es zwei Ansätze: Man kann entweder die Char-Werte für die Zeichen 'n' und 'N' verwenden, um mit int arbeiten zu können. Dies hat jedoch den Nachteil, das es nur innerhalb von ASCII funktioniert, weshalb ich davon nicht wirklich Fan bin. Die andere naheliegende Möglichkeit wäre, dass man die Abfrage aus dem Switch-Block herausnimmt. Ich habe dir mal ein keines Beispiel gebaut, in dem ich erstmal die Eingabe als String speichere, dann kontrolliere, ob 'n' oder 'N' eingegeben wurde und anschließend zu int parse, um deinen switch-Block umzusetzen. Das ganze läuft in besagter do-while-Schleife ab, damit das Programm nach dem Durchgang weiterläuft.
Java:
package Woche2;
import java.util.Scanner;
public class aufgabe5auch {
public static void main(String[] args) {
String note;
Scanner scanner = new Scanner(System.in);
do {
System.out.println("Bitte deine gewünschte Note von 1-6 eingeben:");
note = scanner.nextLine();
if ( note.equals("n") || note.equals("N") ) {
System.out.println("Beende Programm!");
System.exit(0);
}
int noteNum = Integer.parseInt(note);
switch (noteNum) {
case 1:
System.out.println("Note= Sehr gut");
break;
case 2:
System.out.println("Note= gut");
break;
case 3:
System.out.println("Note= befriedigend");
break;
case 4:
System.out.println("Note= ausreichend");
break;
case 5:
System.out.println("Note= mangelhaft");
break;
case 6:
System.out.println("Note= ausreichend");
break;
default:
System.out.println("Ungültige Eingabe. Bitte wiederholen!");
}
} while (true);
// scanner.close();
}
}
Man kann entweder die Char-Werte für die Zeichen 'n' und 'N' verwenden, um mit int arbeiten zu können. Dies hat jedoch den Nachteil, das es nur innerhalb von ASCII funktioniert, weshalb ich davon nicht wirklich Fan bin.
Mit 'nem int sollte sich jedes beliebige Zeichen darstellen lassen, beschränkt auf Ascii wäre man nur mit byte (Oder ich hab den Satz völlig falsch verstanden)