OOP Berechnung des Skalarprodukts

water

Mitglied
Hi Leute,

hab mich so eben angemeldet, weil ich grad an einer Aufgabe verzweifle und einfach nicht mehr weiter weiß. Ich hoffe Ihr könnt mir bei meinen Problemen helfen!

Also meine zwei Klassen, Vector und ScalarProduct (wo die eigentliche Berechnung des Skalarprodukts stattfindet), sehen wie folgt aus:

Java:
public class Vector {
	
	int numEntry;
	double[] vector = new double[numEntry];
	
	public void setNumEntry(int number){
		this.numEntry = number; 
	}
	
	public int getNumEntry(){
		return numEntry;
	}
	
	public void addEntry(int index, double number){
			vector[index] = number;
	}
	
	public double getEntry(int index){
		return vector[index];
	}
	
	public double Multiply(Vector aVector){
		double sum = 0;
		for(int i = 0; i < numEntry; i++){
			sum += vector[i] * aVector.getEntry(i);
		}return sum;
	}
}



Java:
import zlwima.support.Input;
public class ScalarProduct {

	public static void main(String[] args) {
		
		Vector v1 = new Vector();
		Vector v2 = new Vector();
		
		System.out.println("Erster Vektor: ");
		System.out.println("Geben Sie die Anzahl der Einträge ein: ");
		v1.setNumEntry(Input.readInt());
		for(int i = 0; i < v1.getNumEntry(); i++){
			System.out.println("Geben Sie den " + (i+1) + ". Eintrag ein: ");
			v1.addEntry(i, Input.readDouble());
		}
		
		System.out.println("Zweiter Vektor: ");
		System.out.println("Geben Sie die Anzahl der Einträge ein: ");
		v2.setNumEntry(Input.readInt());
		for(int i = 0; i < v2.getNumEntry(); i++){
			System.out.println("Geben Sie den " + (i+1) + ". Eintrag ein: ");
			v2.addEntry(i, Input.readDouble());
		}
		
		if(v1.getNumEntry() == v2.getNumEntry()){
			
			double scalProd = v1.Multiply(v2);
			System.out.println(scalProd);
		}else{
			System.out.println("Berechnung des Skalarprodukts kann nicht" +
					" durchgeführt werden! Prüfen Sie noch einmal die" +
					" Dimensionierung der beiden Vektoren!");
		}

	}

}


Wenn ich dann den ersten Eintrag des ersten Vektors eingebe, erhalte ich folgende Fehlermeldung:

Java:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
	at Vector.addEntry(Vector.java:16)
	at ScalarProduct.main(ScalarProduct.java:14)

Wär echt cool, wenn mir jemand sagen könnte, wo genau der Fehler liegt... und mir erklären könnte, was mir die Fehlermeldung eigentlich mitteilen will!


Gruß
 

water

Mitglied
Hm, aber hab ich nicht durch die Methode .setNumEntry jeweils die Länge der beiden Vektoren geändert? Dann müsste das Vektor-Array so groß sein, wie die Zahl, die ich eingegeben habe.
 

tfa

Top Contributor
Das Array wird in Zeile 4 angelegt, da ist numEntry 0. Wenn du später diesen Wert mit dem Setter änderst, ändert sich aber nichts an dem Array. Wo auch?

ich würde den Setter weglassen und numEntry in einem Konstruktor übergeben und dort auch das Array erzeugen.
 

water

Mitglied
Achso, hm okay. Ich dachte, wenn man jetzt numEntry nachträglich ändert, tut sich auch was bei der Größe des Arrays, weil die ja auch abhängig von numEntry ist. Aber ich glaube ich habs verstanden.. dieser Seiteneffekt (auf den ich irgendwie gehofft habe) tritt ja nur bei Objekten auf, aber nicht bei primitiven Variablen. Daran liegts, oder?

Wie müsste ich denn den Code schreiben, damit der vector-Array die gewünschte Größe, die in der Klasse "ScalarProduct" abgefragt wird, hat?


Edit: Sorry, hab deinen Edit übersehen. Werd mir jetzt darüber Gedanken machen.
 

water

Mitglied
Das eine hat mit dem anderen nichts zu tun... Vektor ? Wikipedia

Was meinst du damit?


habs jetzt gelöst bekommen..

Java:
public void setNumEntry(int number){
		numEntry = number;
		vector = new double[number]; 
	}

einfach am Setter ein wenig rumprobiert, dann hats geklappt.

Kann man die Aufgabe nicht eigentlich ohne OOP viel einfacher lösen? Ich fands hier jetzt irgendwie nur verwirrend...

@kaetzacoatl: bin noch ein Anfänger in Info/Java, deshalb wollt ich so viel wies geht selber programmieren. Danke trotzdem für den Tipp. :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
pkm Berechnung der Fakultät von Fließkommazahlen anhand von Stirlingformel Allgemeine Java-Themen 4
I Berechnung Lagerbestands / Verfügbarkeitsprüfung Allgemeine Java-Themen 1
L RegEx für Teile einer Berechnung Allgemeine Java-Themen 14
L Korrektur nach der Berechnung vornehmen, aber wie? Allgemeine Java-Themen 11
D Berechnung des Cosinus Allgemeine Java-Themen 4
H float Berechnung: Ergebnis ohne wissenschaftliche Notation Allgemeine Java-Themen 5
A Fehlerhafte Nst Berechnung einer bestimmten Fkt. (Bisektion) Allgemeine Java-Themen 10
E Berechnung des Schnittpunktes von zwei Geraden Allgemeine Java-Themen 1
P Performate Zeiteiteiteilungs- Berechnung Allgemeine Java-Themen 4
B TileMap berechnung? Allgemeine Java-Themen 8
P jodaTime Berechnung Geburtstag Allgemeine Java-Themen 1
K Probleme bei Berechnung der Komplexität Allgemeine Java-Themen 7
S Welcher Schleifen type für eine Berechnung Allgemeine Java-Themen 7
B BlueJ Potenz Berechnung Allgemeine Java-Themen 16
W Berechnung Durchschnitt mit Schleife Allgemeine Java-Themen 9
M Berechnung verbessern Allgemeine Java-Themen 8
H Demonstrationsprogramm zur CRC-Berechnung Allgemeine Java-Themen 2
D Berechnung von Sonnenauf und Sonnenuntergang Allgemeine Java-Themen 2
E Berechnung in Arraylist Allgemeine Java-Themen 10
R Eclipse Verschiedene Ergebnisse bei Berechnung eines double-Werts Allgemeine Java-Themen 5
E Falsche Ergebnisse bei PQ-Formel Berechnung Allgemeine Java-Themen 12
N Optimierung einer Berechnung Allgemeine Java-Themen 17
G java.sql Time Berechnung Allgemeine Java-Themen 6
Eldorado Berechnung von Koordinaten, die zufällig aussehen Allgemeine Java-Themen 5
B Berechnung eines sinh abbrechen, wenn 16. Nachkommastelle sich nicht mehr ändert Allgemeine Java-Themen 7
J Berechnung anhand einer XML-Datei Allgemeine Java-Themen 3
Private Void rekursive vs. iterative Lösung für Berechnung der Fakultät Allgemeine Java-Themen 12
S YUV to RGB (einfache Berechnung) Allgemeine Java-Themen 5
G Programm zur Berechnung von Summe, Median, Erwartungswert, usw von einem Array Allgemeine Java-Themen 7
C Bilder rotieren, Denkfehler in der Berechnung? Allgemeine Java-Themen 2
B Berechnung von Punkten/ If-else Strategie?! Allgemeine Java-Themen 51
T Berechnung in zweidimensionalem Array Allgemeine Java-Themen 3
X hashCode() Berechnung Allgemeine Java-Themen 5
R Tabelle - Berechnung der "Zeilenart" Allgemeine Java-Themen 2
L Berechnung mit Module bis bes.timme Zahl erreicht. Allgemeine Java-Themen 4
P CRC Berechnung Allgemeine Java-Themen 2
J berechnung von potenzen und wurzel-ziehen ohne klasse " Allgemeine Java-Themen 14
D Problem bei einer Berechnung (pow?) Allgemeine Java-Themen 3
P Java-Programm zur Berechnung globaler Minimas und Maximas-ff Allgemeine Java-Themen 4
B Primzahlen Berechnung optimieren Allgemeine Java-Themen 7
A Probleme bei der Berechnung von Pi! Java Problem Allgemeine Java-Themen 2
M Servlet --> Berechnung --> Timeout vom Proxy oder IE!? Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben