Switch Case Modulo berechnen

Funktionierdochmal

Bekanntes Mitglied
Hallo Leute,

sitze hier seit Stunden und finde leider auch nichts über google. Es geht darum, mithilfe der Switch Case Methode Alternative darzustellen: Ich möchte als Benutzer auf der Konsole eine ganze Zahl eingeben, die getestet werden soll, ob sie durch 13 teilbar ist. Wenn ja, soll ich diese Zahl durch 7 berechnen, ansonsten soll diese Zahl Modulo drei gerechnet werden. If Anweisungen darf ich dabei nicht benutzen.

Mein Plan ist, im ersten Case zu schauen, ob zahl%13==0 ist, um daraufhin die Anweisung System.out.println(zahl/7); zu schreiben.

Ich habe es ansatzweise versucht, jedoch klappt es nicht und mein anderer Plan wäre, eine Variable zu deklarieren (int oder boolean), die diese Formel berechnet. Mein Switch soll sich dann auf diese Variable beziehen ( switch (true) { ) oder Ähnliches.

Leider kann ich Sachen aus dem Internet nicht mit meiner Aufgabe vergleichen bzw mir fehlt der Ansatz...kann mir wer weiterhelfen?

Vielen Dank im Voraus
 
Java:
float ergebnis = (eingabe % 13) == 0 ? eingabe / 7.0f : eingabe % 3;
Jetzt ist nur noch die Frage, ob das Ergebnis ein float sein soll, da ja z.B. 13 / 7 keine ganze Zahl ist, oder ob es einfach der integrale Teil des Ergebnisses sein soll (also per Integer-Division).
 
Java:
public class Hauptprogramm {

	public static void main(String[] args) {

		int zahl = 26;

		switch (zahl % 13) {
		case 0:
			System.out.println(zahl / 7.0);
			break;
		}

	}
}
 
Java:
case >=1: {
            System.out.println(zahl % 3);
        break; }

habe versucht, dass wenn der rest größer gleich 1 ist (weil die zahl dann nicht glatt teilbar durch 13 ist), dass modulo 3 gerechnet wird, klappt leider nicht ganz... Ideen?
 
Zuletzt bearbeitet von einem Moderator:
Java:
public static void main(String[] args) {
      
        java.util.Scanner scanner = new java.util.Scanner(System.in);
      
        System.out.println("Geben Sie eine ganze Zahl ein: ");
      
     
        int zahl = scanner.nextInt();
      
      
      
        switch (zahl % 13) {
        case 0: {
            System.out.println(zahl / 7.0);
        break; }
        case >=1: {
            System.out.println(zahl % 3);
        break; }
        }
    }
}

so sieht das ganze jetzt bei mir aus
 
Zuletzt bearbeitet von einem Moderator:
Java:
switch (zahl % 13) {
        case 0: {
            System.out.println(zahl / 7.0);
        break; }
        default: {
            System.out.println(zahl % 3);
        break; }
damit scheint es zu klappen...
 
Zuletzt bearbeitet von einem Moderator:
Ich habe ehrlich gesagt noch nie gesehen, dass innen nochmal geschwungene Klammern sind
Ich allerdings schon,
aber die Formatierung stört mich etwas.

@httpdigest hat es schon erklärt.... seine Frage bleibt noch zu beantworten ob es der Integer-Teil sein soll oder nich.

Allgemein lässt sich sagen, das man bei beibehaltung größtmöglicher Genauigkeit beide Ergebnisse ausgeben sollte. Und die größtmögliche erhaltende Genauigkeit hat hierbei.... nicht float.

(*) Sorry wegen der Rechtschreibung....
 
Ich habe ehrlich gesagt noch nie gesehen, dass innen nochmal geschwungene Klammern sind.
Hat den Vorteil, dass der Teil noch mal ein eigener Block ist. switch-case hat sonst beim Scope einige "Merkwürdigkeiten"...

Code:
switch (x)  {
            case 1:
                final int y = 42;
            case 2:
                int y = 21; // y ist bereits deklariert...
            case 3:
                x = y; // ...aber y ist nicht initialisiert...
            case 4:
                y =84; // ...und y kann nicht zugewiesen werden, weil final
        }
 
Java:
switch (zahl % 13) {
        case 0: {
            System.out.println(zahl / 7.0);
        break; }
        default: {
            System.out.println(zahl % 3);
        break; }
damit scheint es zu klappen...

Dann hast du's ja selbst schon gelöst.
Switch / Case kann nur auf Gleichheit testen (Sprich: "Größer als" und "Kleiner als" funktionieren nicht). Früher konnte man damit ausschließlich primitive Datentypen auf vergleichen, mittlerweile klappt's auch z.B. mit String und Enums. Da mittlerweile die .equals(...) Methode des Objekts verwendet wird, darf das Objekt nicht mehr null sein, das muss vorher geprüft werden.
 

Zurück
Oben