webentwicklung-frage-antwort-db.com.de

Wie man Arrays manipuliert Finden Sie den Durchschnitt. Anfänger Java

Ich habe eine Hausaufgabe und habe mich gefragt, ob mir jemand helfen könnte, da ich mit Java und der Programmierung neu bin und mich auf eine Frage stecke. Die Frage ist: 

Die erste Methode ermittelt den Durchschnitt der Elemente eines Integer-Arrays:

public double average(int[] data)

Das heißt, bei einem ganzzahligen Feld werden Daten berechnet. Der Durchschnitt seiner Elemente gibt den Durchschnittswert zurück. Der Durchschnitt von {1, 3, 2, 5, 8} beträgt beispielsweise 3,8. 

Folgendes habe ich bisher gemacht: 

public double average(int[] data) {  
    int sum = 0;

    while(int i=0; i < data.length; i++) 

    sum = sum + data[i]; 
    double average = sum / data.length;; 

    System.out.println("Average value of array element is " " + average);
}

Beim Kompilieren erhalte ich eine Fehlermeldung im int i=0-Teil mit der Aufschrift '.class expected'. Jede Hilfe wäre dankbar. 

7
user1605782

Ein verbessertes For wäre noch schöner:

int sum = 0;
for (int d : data) sum += d;

Eine andere Sache, die Sie wahrscheinlich überrascht, ist das falsche Ergebnis, das Sie von erhalten

double average = sum / data.length;

Grund: Auf der rechten Seite haben Sie eine Ganzzahldivision, und Java wird sie nicht automatisch zur Gleitkommadivision heraufstufen. Es berechnet den ganzzahligen Quotienten von sum/data.length und befördert diese dann nur zu einem double. Eine Lösung wäre

double average = 1.0d * sum / data.length;

Dadurch wird die Dividende in ein double umgewandelt, das sich automatisch zum Divisor ausbreitet.

14
Marko Topolnik
-while(int i=0; i < data.length; i++) 
+for(int i=0; i < data.length; i++) 
7
CyberDem0n

Die Java 8-Streaming-API bietet eine elegante Alternative:

public static void main(String[] args) {
    double avg = Arrays.stream(new int[]{1,3,2,5,8}).average().getAsDouble();

    System.out.println("avg: " + avg);
}
5
skubski

Der beste Weg, den Durchschnitt einiger Zahlen zu finden, ist der Versuch Klassen ......

public static void main(String[] args) {
    average(1,2,5,4);

}

public static void average(int...numbers){
    int total = 0;
    for(int x: numbers){
        total+=x;
    }
    System.out.println("Average is: "+(double)total/numbers.length);

}
0

Um den Durchschnitt eines Arrays zu berechnen, können Sie statt der While-Schleife die for-Schleife verwenden.

Lassen Sie mich also für Ihre Frage ein Array als arrNumbers annehmen (hier betrachte ich dieselben Array-Elemente wie in Ihrer Frage)

int arrNumbers[] = new int[]{1, 3, 2, 5, 8};
int sum = 0;

for(int a = 0; a < arrNumbers.length; a++)
{
   sum = sum + arrNumbers[a];
}

double average = sum / arrNumbers.length;

System.out.println("Average is: " + average);

Sie können auch die Klasse scanner verwenden. Es ist dir überlassen.

0
Lohith

Versuchen Sie es auf diese Weise

public void average(int[] data) {  
    int sum = 0;
    double average;

    for(int i=0; i < data.length; i++){
        sum = sum + data[i];
    }
    average = (double)sum/data.length;
    System.out.println("Average value of array element is " + average);    
}

wenn Sie einen Durchschnittswert zurückgeben müssen, müssen Sie double key Word anstelle des void - Schlüsselworts verwenden und den Wert return average zurückgeben.

public double average(int[] data) {  
    int sum = 0;
    double average;

    for(int i=0; i < data.length; i++){
        sum = sum + data[i];
    }
    average = (double)sum/data.length;
    return average;    
}
0
mssb