ArrayIndexOutOfBoundsException5

Faili

Mitglied
Hey,
der genaue fehler lautet:
exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:5
müsste ja eig heißen i läuft aus der schleife raus oder ?
hab leider jedoch keine ahnung wie ich es beheben soll, hab auch schon viel rumprobiert.
Java:
public class Konkaten
{
  public static void main (String [] args )
  {

	char []xfeld_ref;
	char []yfeld_ref;

	String xvar_ref ="Hello";
	String yvar_ref ="World";

	xfeld_ref= xvar_ref.toCharArray();
	yfeld_ref= yvar_ref.toCharArray();
  	System.out.println(konkatenieren(xfeld_ref, yfeld_ref));

		
  }

	public static char[] konkatenieren(char []xfeld_ref ,char []yfeld_ref)
 	{
	
	char [] ergebnis_ref = new char [xfeld_ref.length + yfeld_ref.length];

	for (int i=0;i< xfeld_ref.length + yfeld_ref.length; i++)

		if (i < xfeld_ref.length)
		  ergebnis_ref [i] = xfeld_ref [i];
		else
		  ergebnis_ref [i] = yfeld_ref [i];

	return ergebnis_ref;
	}
}

danke schonmal im voraus :)
 

eRaaaa

Top Contributor
for (int i=0;i< xfeld_ref.length + yfeld_ref.length; i++)

wie groß wird hier i? wie groß sind deine Arrays? (nicht das neue ergebnis_ref Array)

Was passiert hier:
xfeld_ref
yfeld_ref

:idea:
 

Faili

Mitglied
also die aufgabenstellung lautet:
Schreiben Sie eine Methode namens konkatenieren, die zwei als Paramter übergebene char-
Felder in der Reihenfolge 1.Parameter, 2.Parameter aneinander hängt und in einem von der
Methode neu zu erzeugenden char-Feld ablegt. Der Rückgabewert der Methode ist ein
Verweis auf dieses neue char-Feld.


ich wollte mit der methode to charArray die strings den feldern zuweißen, wobei das feld dann jeweils so lange ist wie der stringt.
weil ich wollte dass das mit verschiedenen strings geht, hab ich probiert das so zu lösen,

for (int i=0;i< xfeld_ref.length + yfeld_ref.length; i++)

if (i < xfeld_ref.length)
ergebnis_ref = xfeld_ref ;
else
ergebnis_ref = yfeld_ref ;

mit der for/if wollte ich dann den inhalt der beiden felder, in einem neuen feld speichern.
 

Timothy Truckle

Top Contributor
Hey,
der genaue fehler lautet:
exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:5
müsste ja eig heißen i läuft aus der schleife raus oder ?
Nein,
Code:
i
wird genau so groß wie du es definiert hast, nämlich
Code:
xfeld_ref.length + yfeld_ref.length
.

Vielleicht solltest du sie Sache anders angehen und nicht in einer Schleife lösen. Das wäre (IMHO) einfacher.

Auf jeden Fall mußt Du Dir darüber klar sein, dass
Code:
yfeld_ref
seinen eigenen, von
Code:
xfeld_ref
unabhängigen Wertebereich für seinen Index hat. Bei Deiner aktuellen Lösung ist beim ersten Zugriff auf
Code:
yfeld_ref
Code:
i = xfeld_ref.length

bye
TT
 

Pentalon

Bekanntes Mitglied
Hi Faili

Du hast nur einen kleinen Fehler gemacht.
Hier die ausgebesserte Variante, Deines Programms:
Java:
public class Konkaten
{
  public static void main (String [] args )
  {
 
    char []xfeld_ref;
    char []yfeld_ref;
 
    String xvar_ref ="Hello";
    String yvar_ref ="World";
 
    xfeld_ref= xvar_ref.toCharArray();
    yfeld_ref= yvar_ref.toCharArray();
    System.out.println(konkatenieren(xfeld_ref, yfeld_ref));
 
        
  }
 
    public static char[] konkatenieren(char []xfeld_ref ,char []yfeld_ref)
    {
    
    char [] ergebnis_ref = new char [xfeld_ref.length + yfeld_ref.length];
 
    for (int i=0;i< xfeld_ref.length + yfeld_ref.length; i++)
 
        if (i < xfeld_ref.length)
          ergebnis_ref [i] = xfeld_ref [i];
        else
          ergebnis_ref [i] = yfeld_ref [i-xfeld_ref.length];     // Hier der 2te Index muss runtergerechnet werden
 
    return ergebnis_ref;
    }
}

Also eigendlich fast richtig :)

ACH MIST, wieder zu langsam :-(

Pentalon
 

Oben