Feld in umgekehrter Reihenfolge an zweites Feld übergeben

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi,
ich soll ein Feld, dass ich zuvor schon eingelesen habe in umgekehrter Reihenfolge an ein zweites Feld übergeben. Obwohl das Ganze theoretisch eigentlich laufen sollte bekomme ich eine Fehlermeldung (siehe unten). Habe es zum einen mit einer For-Schleife probiert, die von 20 runter zählt und eine neue Variable erstellt, die wiederum von 0 hochzählt und zum anderen mit zwei For-Schleifen.
Bei beiden Methoden bekomme ich dieselbe Fehlermeldung...


Code:
public class Aufgabefeld1 {

	public static void main(String[] args)
	{
		
		int[] feld = new int[20];
		
		int[] feld2 = new int[20];
		
		int zaehler = 1;
		for(int i=0; i<20; i++)
		{
			feld[i] = zaehler;
			zaehler = zaehler + 2;
		}
		
		for(int i=0; i<20; i++)
		{
			System.out.print(feld[i]+" ");
		}
		
		for(int i=20; i>0; i--)
		{
		int feld2index = 0;
		
		feld2[feld2index] = feld[i];
		feld2index++;
		}
		for(int i=0; i<20; i++)
		{
			System.out.print(feld2[i]+" ");
		}
	}
}

"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 20 at Aufgabefeld1.main(Aufgabefeld1.java:28)"
 
Hallo,

Code:
for(int i=0; i<20; i++)

i belegt hier Werte von 0 bis 19!

Und jetzt schau dir die Schleife von der Ausgabe an 😉
Daher die ArrayOutOfBoundsException. Der Compiler hat es dir sogar geschrieben ^^

Gruß
 
ohne Gewehr hack ;-) :
Code:
	static int[]  swap(int[] a) {
		int length = a.length;
		
		int[] result = new int[a.length];
		
		int i = -1;
		while(++i < length) {
			result[i] = a[length-1-i];
		}
		return result;
	}}
 
Nachtrag:

überprüf das mal.Hier liegt definitiv der Wurm drin!

Code:
for(int i=20; i>0; i--)
      {
      int feld2index = 0;
      
      feld2[feld2index] = feld[i];
      feld2index++;
      }


Gruß
 
Code:
public class Aufgabefeld1
{

	public static void main(String[] args)
	{
		int stellen = 20;

		int[] feld = new int[stellen];
		int[] feld2 = new int[stellen];

		// Füllen Feld
		for (int i = 0; i < stellen; i++)
		{
			feld[i] = (i);
		}

		// Ausgeben Feld
		for (int i = 0; i < stellen; i++)
		{
			System.out.print(feld[i] + " ");
		}
		System.out.println(); // Zeilenumbruch

		// Umgekehrt übertragen

		for (int i = 0; i < stellen; i++)
		{
			feld2[i] = feld[stellen - (i + 1)];
		}

		// Ausgeben Feld2
		for (int i = 0; i < stellen; i++)
		{
			System.out.print(feld2[i] + " ");
		}
		System.out.println(); // Zeilenumbruch
	}
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben