/ / Werte des Arrays aus dem Index an n zurückgeben? - java, Arrays, indexoutofboundsexception

Gibt Werte von Array von Index zu n zurück? - Java, Arrays, Indexoutofboundexception

Ich möchte nur eine Methode erstellen, die die Werte des Arrays ab Index bis Index + n zurückgibt. Zum Beispiel - Ein Index von 3 und n von 4 sollte die Werte zurückgeben

//Array[3]
//Array[4]
//Array[5]
//Array[6]
//Array[7]

public int[] subSequence(int index, int n, int[] array) {
int[] valuelist = new int[array.length];
for(int i = index; i <= n + index; i++)
{
if((index + n) <= array.length)
valuelist[i] = array[i];
}
return valuelist;

}

Es tut mir leid, dass ich eine solche dumme Frage gestellt habe, aber ich bin neu in dieser Sache und konnte keine ähnliche Frage finden.

Mein Problem: Ich bekomme ArrayIndexOutOfBounds Für das, was ich tue, habe ich keine Ahnung, wie dies gelöst werden kann.

Antworten:

1 für die Antwort № 1

Dies kann dir helfen,

   for(int i = n; i <=( n + index); i++)
{

if( i >=array.length){//check length of array with index,n

break;
}
else{
valuelist[i] = array[i];
}
}

0 für die Antwort № 2
  1. Google für ArrayIndexOutOfBounds.
  2. Lesen Sie den ersten Link (das JavaDoc für die Ausnahme: http://docs.oracle.com/javase/7/docs/api/java/lang/ArrayIndexOutOfBoundsException.html)

Wird ausgelöst, um anzuzeigen, dass auf ein Array mit einem ungültigen Zugriff zugegriffen wurde Index. Der Index ist entweder negativ oder größer als oder Größe des Arrays.


0 für die Antwort № 3

Du hast:

for(int i = index; i <= n + index; i++)

Sie meinen wahrscheinlich:

for(int i = index; i < n + index; i++)

Ich gehe davon aus index ist der Startindex und n soll der Graf sein. In Ihrer aktuellen Implementierung mit <=, betrachten Sie den Fall:

int[] a = new int[50];
int[] b = subSequence(0, 50, a);

Sie könnten sich vorstellen, dass dies funktionieren würde, aber Ihre Schleife würde so lange dauern i <= 0+50was bedeutet, irgendwann i==50, was jenseits des Endes des Arrays liegt (der letzte Index im Array ist 49).

Eine weitere Nebenfrage, die Sie haben, ist:

if((index + n) <= array.length)
valuelist[i] = array[i];

Es sieht so aus, als würden Sie versuchen, den Index in Grenzen zu halten. Prüfen Sie das if etwas genauer, denn das tut es nicht.


0 für die Antwort № 4

if((index + n) <= array.length) Diese Codezeile ist das Problem mit der java.lang.ArrayIndexOutOfBoundsException.

Der Code gibt an, die Anweisungen innerhalb der if-Anweisung auszuführen ob index + n ist weniger als oder gleich die Länge des Arrays. Jetzt, wenn index+n ist gleich der Länge des Arrays. Beim Versuch, Werte für Ihre Arrays in dieser Anweisung festzulegen, wird eine ArrayIndexOutOfBoundsException ausgegeben valuelist[i] = array[i];

Versuchen Sie Folgendes, um die ArrayIndexOutOfBoundsException zu vermeiden:

if((index + n) < array.length)

Dieser Code hat die Gleichheitsbedingung entfernt und wird nur ausgeführt, wenn der Ausdruck index + n ist kleiner als die Länge des Arrays. : D

Ein wichtiger Punkt, den Sie sich merken sollten, sind ArraysBeginnen Sie mit Null, wenn Sie darauf zugreifen. Das Längenattribut des Arrays basiert jedoch nicht auf Null. Wenn der Code versucht, mithilfe des Längenattributs auf ein Array-Element zuzugreifen, wird diese Laufzeitausnahme ArrayIndexOutOfBoundsException ausgelöst. Dies liegt daran, dass der Code versucht, auf ein Element zuzugreifen, bei dem ein Element das Ende des Arrays passiert.

Beispiel:

int [] x = {0, 1}; // x.length = 2 and 1 is at position 1 and 0 is at position 0
System.out.println(x[x.length]); //throws ArrayIndexOutOfBoundsException
System.out.println(x[0]); // prints the first element 0

Glückliche Kodierung.


-3 für die Antwort № 5

Wenn Sie die Größe des Arrays nicht kennen, verwenden Sie besser arraylist oder andere Sammlungsklassen mit fester Größe. Danach konvertieren Sie es in ein Array oder verwenden Sie es so wie es ist.