Durchschnitt mit Arrays berechnen (Java), aber wie?
Ich habe bereits an meinem Programm gearbeitet, bekomme aber immer wirre Endergebnisse raus. Warum?
Hier mein Code:
//Eingabe: 3; 3; 3; 0;
// Bei "0" soll er abbrechen;
void setup(){
int i = 1;
float[] a = new float[99];
do{
float input = Popup.readFloat("");
if(input
a[i] = input;
i = i+l;
0){break;}else{ ==
}
}while(a[i-1]!=0);
println(durchschnitt(a));
}
float durchschnitt(float[] a){
int laenge = a.length;
float durchschnitt - 0;
for (int i = 1; i <= laenge; i++){
durchschnitt = durchschnitt + a[i-1];
}
return durchschnitt / a.length;
}
Das Ergebnis:
Meine Aufgabenstellung:
2 Antworten
Wieso dieses eklige
for (int i = 1; i <= arr.length; i++) {
sum += arr[i-1];
}
Statt
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
? Arrays fangen bei 0 an also sollten deine Variablen das auch tun.
Und a hat 99 Elemente. Wenn du nur 3 davon auf 3 setzt, dann ist der Rest immer noch 0. 9/99 ist in der Tat 0.0909090909... Für eine variable Länge, nutze eine Liste anstelle des Arrays (oder terminiere auch beim Summieren bei 0 aber davon rate ich stark ab).
Wie wäre es, wenn du das ganze einfach überhaupt nicht trennst sondern gleich bei der Eingabe summierst? Dann bräuchtest du nicht mal ein Array.
ich beantworte bilder wenn es um kunst geht oder graphikdesign , bei code erwarte ich aber schon etwas mehr tätigkeit und nciht so einen faulen mist .
fazit : allgemeine antwort , du arbeitest mit float zahlen und die sind keine genauen zahlen sondern höchst ungenau . ergo kein wunder wenn deine ergebnise auch ungenau sind . nachlesen wie float zahlen im computer funktionieren kann man auf unendlich vielen seiten .
Ich muss Arrays für eine Hausaufgabe nutzen. Aber danke für die Hilfe, jetzt geht's ein wenig besser.