# Array als Parameter übergeben



## lenarena (10. Mai 2011)

Schönen Vormittag!

Ich tüftle schon seit gestern - und hab mich auch schon durch unzählige Foren gelesen, leider komme ich nicht drauf wieso mein Programm nicht funktioniert. 
Die Aufgabe ist, eine Methode zu schreiben, die den Mittelwert eines double Arrays liefert -> mithilfe eines Parameters. Ich denke, die Codierung des Mittelwerts passt soweit, vielmehr ist mir unklar, ob ich das mit dem Methoden-Parameter ordentlich programmiert habe.

ich bekomme da folgende Fehlermeldung des Compilers

berechneMittelwert(double[]) in mittelwert.Mittelwert cannot be applied to (double,double,double,double,double)
        berechne.berechneMittelwert(344.09, 590.89, 459.03, 659.45, 495.02);


Ich dachte ich könnte die Zahlen dann einfach so eingeben, oder liegt es daran dass man eine andere schreibweise benutzen muss? - oder muss ich zuvor ein double[] array schreiben? und dann dieses mit der Methode aufrufen?
Vielleicht kann mir jemand kurz erklären wie das in der main funktioniert. Vielen Dank!




```
class Mittelwert {
   
   
  public void berechneMittelwert(double[]a){
       
       a= new double[5];
       int i;
       double summe=0.0;
       
       for (i=0; i<=a.length; i++){
        summe = summe+a[i];
        
        System.out.println(summe/a.length); }
    } }


class TestLauf {
    
    public static void main (String[] args){
        
      
        Mittelwert berechne = new Mittelwert();
        berechne.berechneMittelwert(400.09, 234.05, 700.02, 645.09, 9457.80);
    }
 
}
```


----------



## maki (10. Mai 2011)

```
public void berechneMittelwert(double[]a){
       
       a= new double[5];
```
In Java gibt es nur Call-By-Value, das Array dass du erstellst verlässt nie die Methode.

Dein eigentliches Problem:
Du übergibst kein Array, sondern einfach nur Parameter, eine Möglichekit wäre, die Methode so zu deklarieren (wodurch der Compiler implizit ein Array erstellt):

```
public void berechneMittelwert(double... a)
...
```


----------



## AmunRa (10. Mai 2011)

Nein das geht so nicht, dazu musst du ein Array übergeben


```
berechne.berechneMittelwert(new double[]{400.09, 234.05, 700.02, 645.09, 9457.80});
```

edit und der Fehler den Maki schon angedeutet hat


----------



## Andi_CH (10. Mai 2011)

Du übergibst keinen array sondern jede Menge doubles - sagt der Kompiler ja auch ;-)


```
double[] da = {344.09, 590.89, 459.03, 659.45, 495.02};
	Mittelwert berechne = new Mittelwert();
	berechne.berechneMittelwert(da);
```

EDIT: du bist gemein - jawoll ;( einfach so 2 Sekunden shneller sein


----------



## Andi_CH (10. Mai 2011)

maki hat gesagt.:


> ```
> public void berechneMittelwert(double[]a){
> 
> a= new double[5];
> ...



Und was soll das helfen?
Sorry, aber ich würde erst mal das posting  lesen bevor ich in die Tasten haue.


----------



## AmunRa (10. Mai 2011)

Nun





Andi_CH hat gesagt.:


> Und was soll das helfen?



Nun da hat er halt einen weiteren Fehler den der TO gemacht hat aufgezeigt.


----------



## maki (10. Mai 2011)

Andi_CH hat gesagt.:


> Und was soll das helfen?


Einen Fehler zu vermeiden.
Ein Parameter der gleich überschrieben wird ist sinnfrei und sicherlich nicht geplant gewesen.



Andi_CH hat gesagt.:


> Sorry, aber ich würde erst mal das posting  lesen bevor ich in die Tasten haue.


Dann befolge doch mal deinen eigenen Rat


----------



## Andi_CH (10. Mai 2011)

Mea culpa 
	
	
	
	





```
a= new double[5];
```
 übersehen :-(


----------

