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.
Ich komme bei meiner Aufgabe irgendwie nicht zurecht
Ich soll ein Programm schreiben, dass nach Eingbe der gesamten Notenanzahl und eingabe der einzelnen Noten einen Durchschnitt sowie eine Statistik ausgibt. Den Durchschnitt krieg ich noch ohne Probleme hin, aber die Statistik sieht ziemlich mies aus... Ich füg mal den Quelltext mit Erkläungen bei. Vieleicht weiss ja wer weiter.
Code:
import util.StandardIO;
public class Notenfeld3 {
public static void main(String argv[]) {
StandardIO io = new StandardIO();
float summe = 0;
float notenfeld[];
int statfeld[];
int notenanzahl;
int statzahl=0;
notenanzahl = io.readInt("Anzahl der Noten angeben: ");
notenfeld = new float[notenanzahl];
statfeld = new int[6];
for (int i = 0; i < notenanzahl; i++) {
notenfeld[i] = io.readInt((i + 1) + ". Note angeben: ");
summe = summe + notenfeld[i];
}
io.println("Notenüberblick: ");
for (int i = 0; i < statfeld.length; ++i) {
for (int z=0; z<notenfeld.length; ++z){
if ((i+1)==notenfeld[z]){
statzahl = statzahl + 1;
}else {
statzahl = statzahl + 0;
}
}
io.println(statzahl+" mal Note "+(i+1));
}
io.println(" ");
io.println("Notendurchschnitt: " + (summe / notenanzahl));
}
}
Der else part war überflüssig, aber da das programm nicht so lief wie es laufen sollte, hab ich einfach mal alles akribisch genau aufgeschrieben... ICh stell den quelltext nochmal mit erklärungen ein wie ich es mir gedacht habe.
Also das Programm soll so laufen:
1: Anzahl Noten eingeben - Bsp 4
2: 4 einzelne Noten eingeben - Bsp 1-4-2-5
3: Durchschnitt berechen - Bsp 3
4: Statistik ausgeben - Bsp 1 mal Note 1
1 mal Note 2
0 mal Note 3
1 mal Note 4
1 mal Note 5
0 mal Note 6
Code:
import util.StandardIO;
public class Notenfeld3 {
public static void main(String argv[]) {
StandardIO io = new StandardIO();
float summe = 0;
float notenfeld[];
int statfeld[];
int notenanzahl;
int statzahl=0;
notenanzahl = io.readInt("Anzahl der Noten angeben: ");
notenfeld = new float[notenanzahl];
statfeld = new int[6]; // statistikfeld mit 6 werten für 6 Noten
for (int i = 0; i < notenanzahl; i++) {
notenfeld[i] = io.readInt((i + 1) + ". Note angeben: ");
summe = summe + notenfeld[i]; // Durchschnitt
}
io.println("Notenüberblick: ");
for (int i = 0; i < statfeld.length; ++i) { // Hier werden die 6 Noten nacheinander durchgegangen
for (int z=0; z<notenfeld.length; ++z){ // wird geprüft ob die eingegeben werte (noten) mit...
if ((i+1)==notenfeld[z]){ // ... dem wert aus der ersten for schleife übereinstimmen.
++statzahl;
}
}
io.println(statzahl+" mal Note "+(i+1));
}
io.println(" ");
io.println("Notendurchschnitt: " + (summe / notenanzahl));
}
}
Bei meinem aller ersten Quellcode fehlt wirklich nur dass man statzahl wieder auf 0 setzen muss für jede Note ( was gar nicht mal so unlogisch ist ^^) dann läuft das program. Dann ersetzt man noch das überflüssige statzahl durch den passenden Wert aus dem statfeld ersetzt.
Durch weiteres verfeinern kommt man dann auf deine perfekte Lösung.