If else Verzweigungen in Array packen

Hornhauer100

Mitglied
Hallo,

ich habe hier folgende Aufgabe, wo man Punkte angeben sollte und dann gibt die Console die Note aus mit einer ewig langen if else Verzweigung gelöst. Gibt es die Möglichkeit, das alles in ein Array zu packen?

Java:
package Test;

public class TestatAfugabe2 {

	public static void main(String[] args) {
		
	double note = 0;
	double punkte;
	
	System.out.println("Bitte geben Sie Ihre erreicht Punktzahl ein (zwischen 0 und 120!)");
	punkte = EAM.rDouble();
	
	for (int i = 1; i == 1; i++)
	
	 				if (punkte < 60) {
	 					note = 5.0;
		             } else if (punkte >= 60 && punkte <= 65) {
		                 note = 4.0;
		             } else if (punkte > 65 && punkte <= 71) {
		                 note = 3.7;
		             } else if (punkte > 71 && punkte <= 77) {
		                 note = 3.3;
		             } else if (punkte > 77 && punkte <= 83) {
		                 note = 3.0;
		             } else if (punkte > 83 && punkte <= 89) {
		                 note = 2.7;
		             } else if (punkte > 89 && punkte <= 95) {
		                 note = 2.3;
		             } else if (punkte > 95 && punkte <= 101) {
		                 note = 2.0;
		             } else if (punkte > 101 && punkte <= 107) {
		                 note = 1.7;
		             } else if (punkte > 107 && punkte <= 113) {
		                 note = 1.3;
		             } else if (punkte > 113 && punkte <= 120) {
		                 note = 1.0;
		             }
	
	System.out.println(punkte + " " + "Punkte ergeben die Note:" + " " + note);
	
	}
}
 

chuxXo

Bekanntes Mitglied
Sicherlich :) Definierst dir ein Array, mit der Größe deiner Notenanzahl und belegst die Felder mit deinen Noten ;)
 

Joose

Top Contributor
Java:
	 		      if (punkte < 60) {
	 					note = 5.0;
		             } else if (punkte >= 60 && punkte <= 65) {
		                 note = 4.0;
		             } else if (punkte > 65 && punkte <= 71) {
		                 note = 3.7;
		             } else if (punkte > 71 && punkte <= 77) {
		                 note = 3.3;
		             } else if (punkte > 77 && punkte <= 83) {
		                 note = 3.0;
		             } else if (punkte > 83 && punkte <= 89) {
		                 note = 2.7;
		             } else if (punkte > 89 && punkte <= 95) {
		                 note = 2.3;
		             } else if (punkte > 95 && punkte <= 101) {
		                 note = 2.0;
		             } else if (punkte > 101 && punkte <= 107) {
		                 note = 1.7;
		             } else if (punkte > 107 && punkte <= 113) {
		                 note = 1.3;
		             } else if (punkte > 113 && punkte <= 120) {
		                 note = 1.0;
		             }

Kleiner Hinweis: Deine Abfragen "punkte > [ZAHL]" sind nicht notwendig.
Im 1.if prüfst du ob die Zahl kleiner 60 ist -> Note 5.0
Im 2.else-if musst du nicht extra prüfen ob die Zahl >=60 ist, wenn sie es nicht wäre hätte das 1.if schon "true" ergeben ;)

Dadurch ergibt sich folgendes if-elseif Konstrukt (Achtung beim 1.if wurde < 60 auf <=59 geändert damit überall ein <= ist)

Java:
if (punkte <= 59) {
	note = 5.0;
} else if (punkte <= 65) {
	note = 4.0;
} else if (punkte <= 71) {
	note = 3.7;
} else if (punkte <= 77) {
	note = 3.3;
} else if (punkte <= 83) {
	note = 3.0;
} else if (punkte <= 89) {
	note = 2.7;
} else if (punkte <= 95) {
	note = 2.3;
} else if (punkte <= 101) {
	note = 2.0;
} else if (punkte <= 107) {
	note = 1.7;
} else if (punkte <= 113) {
	note = 1.3;
} else if (punkte <= 120) {
	note = 1.0;
}

Für jede Note gibt es nun eine Obergrenze. Hier bietet sich eine Art Key-Value Paar an.
Vielleicht hilft dir das weiter.
 

Neue Themen


Oben