Swing Notenrechner, hilfe dringend gebraucht

Existenzhass

Mitglied
Hallo,
ich habe ein kleines Problem mit meinem Projekt. Ich habe schon alles mögliche in dem Fall ausprobiert und trotzdem komme ich nicht weiter. Ich würde sehr dankbar sein, wenn jemand mir wenigstens eine Idee vorschlagen würde, damit ich mein Problem lösen kann.

Es handelt sich um einen Program, der Notendurchschnitt ausrechnet. Ich habe vorgegebene Interfaces, an die ich mich halten muss. Es enthält unter anderem ein JComboBox. Je nachdem was in der Combobox gewählt ist, ist die Bewertungskriterium anders.
Java:
public void setStandard(String standard) {
		float eWert = 0;
		// Abitur
		if(standard == abi){
			i=0;
			if(eWert <= 19){
				grade = "6";
			}else if(20 >= eWert && eWert <= 26){
				grade = "5-";
			}else if(27 >= eWert && eWert <= 32){
				grade = "5";
			}else if(33 >= eWert && eWert <= 39){
				grade = "5+";
			}else if(40 >= eWert && eWert <= 44){
				grade = "4-";
			}else if(45 >= eWert && eWert <= 49){
				grade = "4";
			}else if(50 >= eWert && eWert <= 54){
				grade = "4+";
			}else if(55 >= eWert && eWert <= 59){
				grade = "3-";
			}else if(60 >= eWert && eWert <= 64){
				grade = "3";
			}else if(65 >= eWert && eWert <= 69){
				grade = "3+";
			}else if(70 >= eWert && eWert <= 74){
				grade = "2-";
			}else if(75 >= eWert && eWert <= 79){
				grade = "2";
			}else if(80 >= eWert && eWert <= 84){
				grade = "2+";
			}else if(85 >= eWert && eWert <= 89){
				grade = "1-";
			}else if(90 >= eWert && eWert <= 94){
				grade = "1";
			}else{
				grade = "1+";
			}
		}
		// Duale Bildungsgänge
		else if(standard == dua){
			i=1;
			if(eWert <= 29){
				grade = "6";
			}else if(30 >= eWert && eWert <= 49){
				grade = "5";
			}else if(50 >= eWert && eWert <= 66){
				grade = "4";
			}else if(67 >= eWert && eWert <= 80){
				grade = "3";
			}else if(81 >= eWert && eWert <= 91){
				grade = "2";
			}else{
				grade = "1";
			}
		}
		// FOS, BOS, Assistenten
		else if(standard == fos){
			i=2;
			if(eWert <= 26){
				grade = "6";
			}else if(27 >= eWert && eWert <= 44){
				grade = "5";
			}else if(45 >= eWert && eWert <= 58){
				grade = "4";
			}else if(59 >= eWert && eWert <= 72){
				grade = "3";
			}else if(73 >= eWert && eWert <= 84){
				grade = "2";
			}else{
				grade = "1";
			}
		}

Die Methode muss in der anderen Klasse angewendet werden, nachdem die Prozenten gezählt wurden. Dies gescheht hier:
Java:
	public void actionPerformed(ActionEvent ae) {
		
		float wert 		= 0.0f;
		float wichtung	= 0.0f;
		float eWert 	= 0.0f;
		float endnote	= 0.0f;
		
		if(ae.getSource() == button){//Wenn "Berechnen" gedruckt wird
			for (int i = 0; i < numsP.length; i++) {
				if(numsP[i].getText().isEmpty()){//Falls die Textfelder leer sind,
					numsP[i].setText("0");//werden die durch nullen ersetzt
					numsW[i].setText("0");
				}
				wichtung += Float.parseFloat(numsW[i].getText());
				wert = Float.parseFloat(numsP[i].getText())*  Float.parseFloat(numsW[i].getText());
				eWert += wert;//Prozente zusammen rechnen

			}
		}
		eWert = eWert/wichtung;//Durchschnitt errechnen
				
		String str = String.valueOf(eWert);
		submitted[0].setText(str);//Durchschnitt anzeigen

		if(ae.getSource() == button1){//Wenn "Zurücksetzen" gedruckt wird
			submitted[0].setText("");//werden die Inhalte aus allen Feldern gelöscht
			for (int i = 0; i < numsP.length; i++) {
				numsP[i].setText("");
			}//for
		}//if
		
		
	}//actionPerfrmed(ActionEvent ae

Das alles sieht in der Abbildung so aus:
https://imagizer.imageshack.us/v2/262x289q90/801/s72u.png

In das Feld Endnote sollte nähmlich die nach den Prozenten ausgerechnete Note reingeschrieben werden.

Vielen Dank für die Vorschläge.
 

Existenzhass

Mitglied
Eine andere Frage. Ich habe Versucht das so zu lösen. Die Standards aufzurufen und in das Feld "submitted[1]" die entsprechende Note reinzu schreiben. Das Problem ist, jedes mal, wenn der button berechnen gedruckt wird, zeigt es nur die Note "6".
Java:
eWert = eWert/wichtung;//Durchschnitt errechnen
		
		String standard = (String) typeList.getSelectedItem();
		gk.setStandard(standard);//Bewertungskriterien werden ausgewählt
		
		float percent = 0.0f;
		gk.getGrade(percent);
		submitted[1].setText(gk.getGrade(percent));//Gesamtnote anzeigen
		
		String str = String.valueOf(eWert);
		submitted[0].setText(str);//Durchschnitt anzeigen

Es wäre sehr freundlich, wenn jemand mir vielleicht paar Tipps geben könnte...

Vielen Dank erst mal.
 
Zuletzt bearbeitet:

Neue Themen


Oben