# Java Array Skalarprodukt testen



## kilopack15 (7. Nov 2016)

Hallo Leute
Habe folgende Aufgabe:


> Die Methode skalarprodukt(int[] vektor1, int[] vektor2) soll das Skalarprodukt zweier Arrays zurückgeben. Gehen Sie davon aus, dass beide Vektoren (Arrays) dieselbe Länge haben!


Meine Lösung:

```
public int scalar(int [] vektor1 , int [] vektor2 ){
            for(int c=0; c <= (vektor1.length); c++){
                skalarprodukt = skalarprodukt + (vektor1[c] * vektor2[c]);
            }
            return skalarprodukt;

        }
```
Erstmal: Ist das bis dahin richtig?

Zweitens: Ich wollte es testen mit folgendem Code:

```
public static void main(String[] args){
    int[] v1 = new int[2];
    int[] v2 = new int[2];
    for(int cf = 0;cf <=2;cf++){
        v1[cf]=cf+1;
        v2[cf]=cf+3;
    }
    System.out.println(scalar( v1 , v2));
}
```
Wie kann ich dabei die Arrays v1 und v2 als Parameter der Methode scalar übergeben?
Vielen Dank im Voraus!!


----------



## JStein52 (7. Nov 2016)

kilopack15 hat gesagt.:


> *for*(*int* c=0; c <= (vektor1.length); c++){


Hier gehört schon mal < hin und nicht <=

Edit: und hier auch

for(int cf = 0;cf <=2;cf++){


----------



## JStein52 (7. Nov 2016)

kilopack15 hat gesagt.:


> Wie kann ich dabei die Arrays v1 und v2 als Parameter der Methode scalar übergeben?


Genau so wie du es gerade tust

Edit: und ansonsten wird der println nicht das ausgeben was du erwartest.


----------



## kilopack15 (7. Nov 2016)

Hmm, der sagt mir dann so etwas 





> Cannot make a static reference to the non-static method scalar(int[], int[]) from the type
> Schleife


 und führt nicht aus


----------



## JStein52 (7. Nov 2016)

JStein52 hat gesagt.:


> Edit: und ansonsten wird der println nicht das ausgeben was du erwartest.


Doch wird er. Ich habe erst nicht gesehen dass du das Skalarprodukt ausrechnest. Sorry


----------



## mrBrown (7. Nov 2016)

JStein52 hat gesagt.:


> Edit: und ansonsten wird der println nicht das ausgeben was du erwartest.


Warum sollte es keinen int ausgeben können?


----------



## JStein52 (7. Nov 2016)

Einfach das ändern was er anmosert:

Cannot make a static reference --> public static int scalar(....)


----------



## kilopack15 (7. Nov 2016)

Okay hab die Ungleichungen gefixt macht auch Sinn. Habt ihr eine Ahnung wie ich die o.g. Fehlermeldung beheben kann?


----------



## JStein52 (7. Nov 2016)

mrBrown hat gesagt.:


> Warum sollte es keinen int ausgeben können?


Ja ich dachte zuerst er liefert ein int[] zurück.


----------



## kilopack15 (7. Nov 2016)

Okay hab die Methode statisch gemacht. Dann mosert er bei "return skalarprodukt" weiter herum: 





> Cannot make a static reference to the non-static field skalarprodukt


----------



## Nuiton (7. Nov 2016)

```
private static int skalarprodukt
```


----------



## kilopack15 (7. Nov 2016)

Sehr cool. Skalarprodukt ist 11. Das stimmt! Danke für die Verbesserungen und Tipps!


----------



## JStein52 (7. Nov 2016)

Nuiton hat gesagt.:


> *private* *static* *int* skalarprodukt


Nein, skalarprodukt einfach als Variable in scalar definieren. Sonst ist der Returnwert ja einigermassen sinnlos.


----------



## kilopack15 (7. Nov 2016)

Hm also es hat geklappt..


----------



## JStein52 (7. Nov 2016)

kilopack15 hat gesagt.:


> Hm also es hat geklappt..


Klar klappt es auch so aber es ist sinnlos.


----------



## mrBrown (7. Nov 2016)

Die Methode als static deklarieren, und den Rückgabewert nur lokal wäre am sinnvollsten...


----------



## JStein52 (7. Nov 2016)

mrBrown hat gesagt.:


> Die Methode als static deklarieren, und den Rückgabewert nur lokal wäre am sinnvollsten...


Genau !


----------



## kilopack15 (7. Nov 2016)

Hmm da seid ihr sehr am fachsimpeln. Falsch ist es doch nicht oder? Und was bedeutet sinnlos?


----------



## Nuiton (7. Nov 2016)

Die meinen, dass du am besten skalarprodukt lokal definierst (also in der Methode). Ich weiss nicht ob es falsch ist, kommt drauf an was du damit anstellen willst.


----------



## JStein52 (7. Nov 2016)

Einfache Antwort:

rufe die scalar zweimal hintereinander auf und gib das Ergebnis aus.


----------



## kilopack15 (7. Nov 2016)

Achso weiterhin will ich nichts damit anstellen. Nur zum testen. Das ist schließlich nur eine Übungsaufgabe


----------



## mrBrown (7. Nov 2016)

kilopack15 hat gesagt.:


> Achso weiterhin will ich nichts damit anstellen. Nur zum testen. Das ist schließlich nur eine Übungsaufgabe


Und grad beim Testen kann man es richtig machen, wenn man es falsch übt, macht man es nur immer wieder falsch


----------

