# arrays vergleichen



## jazzcookie (23. Nov 2009)

hi,
ich muss eine funktion machen die zwei char arrays auf gleichheit prueft.
java beschwert sich zwar nicht ueber einen syntaxfehler,aber bei der ausfuehrung treten fehler auf:

"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
	at de.tum.ws2009.grprog.uebungsblatt04.CharArrayCompare.isEqual(CharArrayCompare.java:43)
	at de.tum.ws2009.grprog.uebungsblatt04.CharArrayCompare.main(CharArrayCompare.java:86)"

was bedeuten diese fehlermeldungen konkret?

ich habe hier mal den code niedergeschrieben.vielleicht entdeckt jemand einen fehler


```
public static boolean isEqual(char[] str1, char[] str2)//(b)
	{
		if(str1.length==0&&str2.length==0)//string 1 und 2 haben laenge 0
		{
			System.out.println("true");//schreibe true
		return true;//true wird zurueckgegeben
		}
		else//string 1 und 2 haben nicht laenge 0
		{
			if(str1.length==str2.length)//char[] str1 ist gleich lang wie char [] str2
			{
				int i=0;//setze i = 0
				while (str1[i]==str2[i]&&i<=str1.length)//wenn str1 an der i-ten position str2 gleicht und i kleiner gleich der laenge von str1 ist, dann sind wir in der schleife
				{
					i++;//checkt nacheinander alle eintraege der arrays auf gleichheit
				}
				if(str1[i]!=str2[i])//die schleife wurde verlassen, weil str1[i]!=str2[i] oder weil alle eintraege verglichen wurden
				{
					System.out.println("false");//schreibe false
					return false;
				}
				else//alle eintraege wurden abgeglichen:es wurde nie ungleichheit festgestellt
				{
					System.out.println("true");//schreibe true
					return true;
				}
				
			}
			else//char[] str1 ist nicht gleich lang wie char [] str2
			{
				System.out.println("false");//schreibe false
				return false;
			}
			
		}
		
	}
```

ah ja ich hab vergessen, dass ich die funktion auch aufrufe.vielleicht geschieht auch dort ein fehler.


```
public static void main(String args[]) {
		char[]a=new char[5];//array der laenge 5
		char[]b=new char[5];//array der laenge 5
		isEqual(a,b);
```


----------



## Marco13 (23. Nov 2009)

Ähm ... http://java.sun.com/javase/6/docs/api/java/util/Arrays.html#equals(char[],%20char[]) ???:L

EDIT: Oder ist das eine Aufgabe ... also gerade diese Funktion per Hand zu implementieren?


----------



## eRaaaa (23. Nov 2009)

genau hätte ic hauch gesagt, aber um dir deinen fehler noch zu nennnen:

du schreibst
[c]str1_==str2&&i<=str1.length[/c] da greifst du ja im vorderen teil schon auf den index i im array zu , da amchts ja schon PENG, und erst danach fragst du ab ob die laenge <= i ist ( <= ist übrigens eh verkehrt, muss kleiner sein)_


----------



## SlaterB (23. Nov 2009)

ArrayIndexOutOfBoundsException sagt dir nix? kann man sicher auch bei google finden

> while (str1_==str2&&i<=str1.length)

iwe wärs, i<=str1.length VOR dem Zugriff auf die Arrays zu prüfen,
und i muss sogar < sein,_


----------

