# Addieren von zwei Arrays



## neila_1982 (24. Aug 2009)

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??


```
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


----------



## 0x7F800000 (24. Aug 2009)

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

```
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.


----------



## neila_1982 (24. Aug 2009)

Vielen Dank
Es funktioniert jetzt:toll:

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


```
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));
			
			
		}

	}
```


----------



## Marco13 (24. Aug 2009)

Ja, aber

```
... throws IllegalArgumentException

// und

throw new IllegalArgumentException("May not pass null (das solltest du vielleicht noch abfragen) or arrays with different lengths to this method");
```


----------



## 0x7F800000 (24. Aug 2009)

Ja, aber wozu

```
... throws IllegalArgumentException
```
?
bei RuntimeExceptions geht's doch auch ohne... Lenkt nur von wichtigen Exceptions ab


----------

