Addieren von zwei Arrays

Status
Nicht offen für weitere Antworten.

neila_1982

Mitglied
Hallo,

ich möchte zwei Vektor miteinander addieren. Die Eingaben beinhalten zwei int-Arrays a und b. Die Funktion, die ich programmiert habe soll elementweise beide Vektoren addieren, falls sie die gleiche Dimension enthalten, ansonsten null.
Der Code ist soweit fehlerfrei, aber irgendwie, gibt er trotz system.out.println Ausgabe nicht das Ergebnis aus. Was habe ich falsch gemacht??

Java:
 package Vektorrechnung;

public class Vektor {
	static int[]a;
	static int[]b;
	
	
	public  static int[]addiere(int[]a, int[]b){
		int[] c = new int [a.length];
		
		if(a.length == b.length){
//			int [c = new int [a.length];
			for(int i = 0; i<a.length; i++){
				c[i] = a[i] + b[i];
			}
			return c;
		} else{
			return c = null;			
		}
	}
	public static void main(String[] args) {
		int []a = {1,2};
		int []b = {9,8};
		
		int []c = addiere(a, b);
		System.out.println(c);
			
			
		}

	}

meine Fehlermeldung ist

[I@3e25a5
 
Das ist keine Fehlermeldung
[ Steht für array
I steht für integer
@3e25a5 ist irgendeine speicheradresse

So sieht das Array aus, wenn man den direkt per system.out.println ausgibt.

Für eine etwas leserliche Darstellung solltest du java.util.*; importieren und dann
Java:
System.out.println(Arrays.toString(c));
benutzen.

Bei unpassenden Dimensionen solltest du imho lieber eine IllegalArgumentException werfen, statt null zurückzugeben.

i.Allg sollte man weniger mit Arrays herumhantieren: auf sie sollte man nur zurückgreifen, wenn man irgendwelche speziellen datenstrukturen bastelt. Also lieber nicht "roh verzehren". Zum beispiel was die Darstellung angeht, gibt es solche Probleme bei Collections nicht.
 
Zuletzt bearbeitet:
Vielen Dank
Es funktioniert jetzt:toll:

:applaus:
Hier nochmal der Code ohne Fehler für alle anderen.

Java:
package Vektorrechnung;
import java.util.*;
public class Vektor {
	static int[]a;
	static int[]b;
	
	
	public  static int[]addiere(int[]a, int[]b) throws Exception{
		int[] c = new int [a.length];
		
		if(a.length == b.length){
//			int [c = new int [a.length];
			for(int i = 0; i<a.length; i++){
				c[i] = a[i] + b[i];
			}
			return c;
		} else{
			throw new Exception();			
		}
	}
	public static void main(String[] args) throws Exception {
		int []a = {1,2};
		int []b = {9,8};
		
		int []c = addiere(a, b);
		
		// aus der java.util gibt es die Klasse Arrays mit der Methode
		System.out.println(Arrays.toString(c));
			
			
		}

	}
 
Ja, aber
Code:
... throws IllegalArgumentException

// und

throw new IllegalArgumentException("May not pass null (das solltest du vielleicht noch abfragen) or arrays with different lengths to this method");
 
Ja, aber wozu
Code:
... throws IllegalArgumentException
?
bei RuntimeExceptions geht's doch auch ohne... Lenkt nur von wichtigen Exceptions ab 😉
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben