Notensystem Switch-Case

Diskutiere Notensystem Switch-Case im Java Basics - Anfänger-Themen Bereich.
B

Basics_Java

Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

public class NotenUmwandler {
    static int nextInt(BufferedReader scanner) throws NumberFormatException, IOException {
        return Integer.parseInt(scanner.readLine());
    }
    
    public static void main(String[] args) throws IOException{
        BufferedReader scanner = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Welches Notensystem?");
        String hoch = "Hochschule";
        String gym = "Gymnasium";
        int ggym = Integer.parseInt(gym);
        
        System.out.println("Welche Note(z.B. 10)?");
        
        switch (ggym){
        
            case 15: System.out.println("ausgezeichnet");
            case 14: case 13:
                System.out.println("sehr gut");
            case 12: case 11: case 10:
                System.out.println("gut");
            case 9: case 8: case 7:
                System.out.println("befriedigend");       
            case 6: case 5: case 4:
                System.out.println("ausreichend");     
            case 3: case 2: case 1:
                System.out.println("nicht ausreichend");     
            default: System.out.println("Falsche Eingabe!");
          }
        
        System.out.println("Welche Note(z.B. 1.0?");
        switch(hoch)
        {
            case "1.0": case "1.3":
                    System.out.println("sehr gut");
            case "1.7": case "2.0": case "2.3":
                System.out.println("gut");
            case "2.7": case "3.0": case "3.3":
                System.out.println("befriedigend");
            case "3.7": case "4.0":
                System.out.println("ausreichend");
            case "5.0": System.out.println("nicht ausreichend");
                break;
            default:
                
        }

    }

}
Ich bekomme ein Exception Fehler.
Ich würde gern das Programm starten es soll mich nach einem Schulsystem fragen, danach soll er mich fragen was ich gerne für eine Note wählen würde je nach Schulsystem.
 
Zuletzt bearbeitet:
Kirby_Sike

Kirby_Sike

Schick mal deine Fehlermeldung

Ich vermute es ist eine NumberFormatException ;)

Das liegt an deinem Integer.parseInt(gym); da gym = „Gymnasium“ ist und dies keinen int darstellt ;)
 
B

Basics_Java

Schick mal deine Fehlermeldung

Ich vermute es ist eine NumberFormatException ;)
Exception in thread "main" java.lang.NumberFormatException: For input string: "Gymnasium"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Integer.parseInt(Integer.java:658)
at java.base/java.lang.Integer.parseInt(Integer.java:776)
at NotenUmwandler.main(NotenUmwandler.java:16)
 
Kirby_Sike

Kirby_Sike

Du musst bei Integer.parseInt immer darauf achten, dass der String eine int Darstellung enthält ansonsten kommt deine Fehlermeldung ;)

Das wäre valide:Integer.parseInt(„14“);
 
MoxxiManagarm

MoxxiManagarm

System.out.println("Welche Note(z.B. 10)?");
Alleine das erfordert doch keine Eingabe. Die Eingabe musst du schon danach noch einfordern. Du brauchst 3 Eingaben: 1. Hochschulwahl, 2. Notenwahl für Gymnasium, 3. Notenwahl für Hochschule. Platziere diese jeweils unter dem System.out.println. Außerdem, woher weiß der Anwender, welche Notensysteme zur Verfügung stehen? Dem Auswahl solltest du ihm schon auch anzeigen
 
B

Basics_Java

Alleine das erfordert doch keine Eingabe. Die Eingabe musst du schon danach noch einfordern. Du brauchst 3 Eingaben: 1. Hochschulwahl, 2. Notenwahl für Gymnasium, 3. Notenwahl für Hochschule. Platziere diese jeweils unter dem System.out.println. Außerdem, woher weiß der Anwender, welche Notensysteme zur Verfügung stehen? Dem Auswahl solltest du ihm schon auch anzeigen
Ja, gut das wäre eine Möglichkeit, aber wie bekomme ich es hin, dass Gymnasium als Integer durch geht ?
 
K

Kreuzberg0

Hm 1.7 zählt doch zu sehr gut? Jedenfalls hab ich oft diese Note... Und der Schnitt kann mWn. doch auch unter 1.0 sein...
 
MoxxiManagarm

MoxxiManagarm

Ja, gut das wäre eine Möglichkeit, aber wie bekomme ich es hin, dass Gymnasium als Integer durch geht ?
Gar nicht, "Gymnasium" ist nunmal kein Int. Du nimmst erst die Auswahl des Systems entgegen. Die Auswahl wertet du aus. Dann hast du 2 Programmzweige, 1 für Hochschule und 1 für gymnasium. Erst im Programmzweig Gymnasium findest du einen int ein.
 
Kirby_Sike

Kirby_Sike

Naja du kannst deine einlese Methode verwenden:

Java:
int gym = nextInt(scanner);
 
B

Basics_Java

Naja du kannst deine einlese Methode verwenden:

Java:
int gym = nextInt(scanner);
Ich soll ja das Notensystem auswählen zwischen Hochschule und Gymnasium.
Wenn ich Gymnasium schreibe soll er in die Switch-Case von Gymnasium.
Und das soll Integer zahlen sein.
und bei Hochschule Strings
 
mihe7

mihe7

Du willst zuerst einen String einlesen, dann prüfst Du, ob es sich bei der Eingabe um "Gymnasium" oder "Hochschule" handelt. Je nachdem verfährst Du eben unterschiedlich weiter.
 
B

Basics_Java

Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

public class NotenUmwandler {
    
    public static void main(String[] args) throws IOException{
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("Welches Notensystem?");
        System.out.println("1 - Gymnasium");
        System.out.println("2 - Hochschule");
        int auswahl = scanner.nextInt();
        int note = scanner.nextInt();
        String notehoch = scanner.nextLine();
        switch(auswahl) {
        case 1:
                switch (note)
                {
                    case 1: case 2: case 3:
                        System.out.println("nicht ausreichend");
                        break;
                    case 4: case 5: case 6:
                        System.out.println("ausreichend");
                        break;
                    case 7: case 8: case 9:
                        System.out.println("befriedigend");
                        break;
                    case 10: case 11: case 12:
                        System.out.println("gut");
                        break;
                    case 13: case 14:
                        System.out.println("sehr gut");
                        break;
                    case 15:
                        System.out.println("ausgezeichnet");
                        break;
            
                    case 42:
                        System.out.println("Don´t panic!");
                        break;
      
                    default:
                        System.out.println("Falsche Eingabe!");
                        break;
                    }
        
        
        case 2:
                switch(notehoch)
                {
                    case "1.0": case "1.3":
                        System.out.println("sehr gut");
                        break;
                    case "1.7": case "2.0": case "2.3":
                        System.out.println("gut");
                        break;
                    case "2.7": case "3.0": case "3.3":
                        System.out.println("befriedigend");
                        break;
                    case "3.7": case "4.0":
                        System.out.println("ausreichend");
                        break;
                    case "5.0":
                        System.out.println("nicht ausreichend");
                        break;
                    default:
                        System.out.println("Falsche Eingabe!");
                        break;
                
                }
        }
    }
}
So Gymnasium funktioniert, doch Hochschule irgendwie nicht
 
J

JustNobody

Was heißt funktioniert nicht?

Was auffällt ist, dass du beim äußeren Switch durchfällst. Da fehlt also ein Break. Und beim default muss kein break mehr sein.
 
B

Basics_Java

Was heißt funktioniert nicht?

Was auffällt ist, dass du beim äußeren Switch durchfällst. Da fehlt also ein Break. Und beim default muss kein break mehr sein.
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

public class NotenUmwandler {
    
    public static void main(String[] args) throws IOException{
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("Welches Notensystem?");
        System.out.println("1 - Gymnasium");
        System.out.println("2 - Hochschule");
        int auswahl = scanner.nextInt();
        int note = scanner.nextInt();
        String notehoch = scanner.nextLine();
        switch(auswahl) {
        case 1:
                System.out.println("Gymnasium");
                System.out.println("Welche Note z.B. 10?");
                switch (note){
                case 1: case 2: case 3:
                    System.out.println("nicht ausreichend");
                    break;
                case 4: case 5: case 6:
                    System.out.println("ausreichend");
                    break;
                case 7: case 8: case 9:
                    System.out.println("befriedigend");
                    break;
                case 10: case 11: case 12:
                    System.out.println("gut");
                    break;
                case 13: case 14:
                    System.out.println("sehr gut");
                    break;
                case 15:
                    System.out.println("ausgezeichnet");
                    break;
                case 42:
                    System.out.println("Don´t panic!");
                    break;
                   default:
                       System.out.println("Falsche Eingabe!");
                      
                }
        
        
        case 2:
                System.out.println("Hochschule");
                System.out.println("Welche Note z.B. 1.0?");
                switch(notehoch)
                {
                case "1.0": case "1.3":
                    System.out.println("sehr gut");
                    break;
                case "1.7": case "2.0": case "2.3":
                    System.out.println("gut");
                    break;
                case "2.7": case "3.0": case "3.3":
                    System.out.println("befriedigend");
                    break;
                case "3.7": case "4.0":
                    System.out.println("ausreichend");
                    break;
                case "5.0":
                    System.out.println("nicht ausreichend");
                    break;
                default:
                    System.out.println("Falsche Eingabe!");
                    
                }
        default:
            System.out.println("Keine Eingabe!");
            
                
        }
    }
}
So sieht mein Code jetzt aus, zuerst frage nach dem System, wenn ich 1 tippe sollte er Gymnasium ausgeben und nach der
Note fragen, dasselbe bei Hochschule. Das ganze bis auf die System.print outs klappen nur bei Gymnasium, ein Beispiel:
Ich tippe 1 für Gymnasium und dann nur 12. Das ist die Ausgabe:

Gymnasium
Welche Note z.B. 10?
gut
Hochschule
Welche Note z.B. 1.0?
Falsche Eingabe!
Keine Eingabe!
 
Thema: 

Notensystem Switch-Case

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben