ArrayIndexOutOfBoundsException

Lisa96

Neues Mitglied
Liebe Forum-Mitglieder,
Ich verstehe leider nicht wieso mir der Compiler die Fehlermeldung "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5" gibt. Ich bin gerade dabei Java zu lernen und bin für jede Hilfe dankbar!
In der Aufgabe geht es darum, ab einer Überschreitung von einer Anzahl negativer Zahlen(b) in einer bestimmten Größe einer Reihenfolge(n) false zurückzugeben oder eben true wenn dies nicht der Fall ist.

Java:
public class Messreihe {
   
    public static void main(String[] args){
        int [] test = { 1,2,3,4,5};
        validSeries(test, 3, 2);
    }

    public static boolean validSeries (int [] a, int n, int b){
       
        int maxMistake = 0;
        int newMaxMistake = 0;
       
        for( int i= 0; i <= a.length; i++ ){
            int j = 0;
                while(i+j <= a.length || j < n){
                    if(a[i+j] < 0){
                    maxMistake++;
                    }
                    j++;
                }
            j = 0;
        }
        if(maxMistake > newMaxMistake){
            newMaxMistake = maxMistake;
        }
        maxMistake = 0;
        if(newMaxMistake >= b){
        return false;}
        else {return true;}
    }
}
 

JCODA

Top Contributor
Array indices fangen bei 0 an, d.h. sowas:
while(i+j <= a.length|| j < n){if(a[i+j]<0){

kann nicht funktionieren, da es den Index 5 nicht gibt. Es gibt nur 0,1,2,3,4.
Anders ausgedrückt: du musst deinen Index "kleiner" der Länge laufen lassen.
 
X

Xyz1

Gast
In der Aufgabe geht es darum, ab einer Überschreitung von einer Anzahl negativer Zahlen(b) in einer bestimmten Größe einer Reihenfolge(n) false zurückzugeben oder eben true wenn dies nicht der Fall ist.
Kannst du die Aufgabe nochmal genau beschreiben? Ich habe sie noch nicht ganz verstanden. Dankeschön.
 

VfL_Freak

Top Contributor
Moin,
Also die Fehlermeldung sagt aus, dass dein Array zu "kurz" ist
na ja, streng genommen besagt sie das nicht, sondern eher, dass auf einen Index, der größer als das Array ist, zugegriffen werden soll.
Deine Aussage würde ja implizieren, das ein einfaches Vergrößern des Arrays ausreicht, was aber meist (und auch hier - siehe Beitrag von @JCODA) nicht der Fall ist, da ein Logikfehler im Algorythmus vorliegt.
Gruß Klaus
 

Lisa96

Neues Mitglied
Kannst du die Aufgabe nochmal genau beschreiben? Ich habe sie noch nicht ganz verstanden. Dankeschön.

Wenn man für n = 3 eingibt und für b =2, dann soll das Programm false ausgeben, wenn das Array >= 2 negative Zahlen in 3 Zahlen hintereinander hat. Ich hoffe das Beispiel konnte es nochmal besser erklären :)

@JCODA , auch wenn ich den Array bis kleiner als die Länge laufen lasse, kommt wieder die selbe Fehlermeldung. Ich verstehe leider nicht wieso das über das Array hinausläuft, obwohl ich die Abbruchbedingung so gesetzt habe, dass es bei der Länge des Arrays stoppen soll.

An die anderen vielen Dank schonmal für die Antworten!
Habt ihr irgendwelche Lösungsvorschläge vielleicht?
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,
@JCODA hat doch ganz zu Anfang Deinen Fehler schion beschrieben!!
Array indices fangen bei 0 an, d.h. sowas:
while(i+j <= a.length|| j < n){if(a[i+j]<0){
kann nicht funktionieren, da es den Index 5 nicht gibt. Es gibt nur 0,1,2,3,4.
Anders ausgedrückt: du musst deinen Index "kleiner" der Länge laufen lassen.
Der erste Fehler: i ist Deine Laufvariable, die also bei Deinem Array a von 0 bis 4 laufen sollte (sie läuft halt bis 5 wegen dem '<=') !!
Dein Hauptproblem ist aber die Abfrage if(a[i+j]<0), da ja in jedem Schleifendurchlauf j inkrementiert wird!

Bau mal in die while-Schleife folgende Konsolenausgabe ein:
Java:
while( i+j <= a.length || j < n )
{
    // !!!!!
    int tmp = i+j;
    System.out.println( "i <" + i + ">  j <" + j + ">  (i+j) <" +  + tmp + ">" );       

    if( a[i+j] < 0 ) 
    {
        maxMistake++;
    }
    j++;
}
Du wirst sehr schnell erkennen, was falsch ist!

Gruß Klaus
 

Joose

Top Contributor
@JCODA , auch wenn ich den Array bis kleiner als die Länge laufen lasse, kommt wieder die selbe Fehlermeldung. Ich verstehe leider nicht wieso das über das Array hinausläuft, obwohl ich die Abbruchbedingung so gesetzt habe, dass es bei der Länge des Arrays stoppen soll.

Das Problem ist die Abbruchbedingung in deiner while-Schleife
Dort lässt du dann vielleicht auch nur bis kleiner als die Länge laufen, ABER du hast dort eine ODER-Verknüpfung.
Sprich solange j < n zutrifft wird die while-Schleife trotzdem ausgeführt.

Dein Hauptproblem ist aber die Abfrage if(a[i+j]<0), da ja in jedem Schleifendurchlauf j inkrementiert wird!
In der while-Schleife wird das eh geprüft ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
Kumora ArrayIndexOutOfBoundsException bei einem Sortierverfahren Java Basics - Anfänger-Themen 2
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
B ArrayIndexOutOfBoundsException, ich finde den Fehler nicht? Java Basics - Anfänger-Themen 10
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
JaVaN0oB java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 18
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
F ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 2
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
C Erste Schritte ArrayIndexOutOfBoundsException beim Speichern im Array Java Basics - Anfänger-Themen 2
Hanschyo ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
I java.lang.ArrayIndexOutOfBoundsException at lösung.main Java Basics - Anfänger-Themen 3
M ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 1
R Compiler-Fehler ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 7
R java.lang.ArrayIndexOutOfBoundsException: 0 Rechner Error Java Basics - Anfänger-Themen 4
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
J Zwei Arrays zippen wirft eine ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 11
V java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 2
L Fehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
L Compiler-Fehler Problem beim Programmieren eines Kalenders (java.lang.ArrayIndexOutOfBoundsException) Java Basics - Anfänger-Themen 2
V ArrayIndexOutofBoundsException:0 Java Basics - Anfänger-Themen 0
R ArrayIndexOutofBoundsException: 10 Java Basics - Anfänger-Themen 5
P ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 2
T ArrayIndexOutOfBoundsException -> Fehler in for-Schleife? Java Basics - Anfänger-Themen 6
S ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
T ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
B java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
S noch ein ArrayIndexOutOfBoundsException Fehler Java Basics - Anfänger-Themen 2
R Compiler-Fehler java.lang.ArrayIndexOutOfBoundsException, warum? Java Basics - Anfänger-Themen 6
O ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 18
J "ArrayIndexOutOfBoundsException", finde den Fehler schlicht nicht Java Basics - Anfänger-Themen 6
A ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 20
T ArrayIndexOutOfBoundsException - Problem mit Array-Größe Java Basics - Anfänger-Themen 4
C ArrayIndexOutOfBoundsException bei meinem ersten objektiorientierten Programm Java Basics - Anfänger-Themen 4
A parseDouble - ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 3
S ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
A ArrayIndexOutOfBoundsException - woher kommt er?! Java Basics - Anfänger-Themen 4
J AWT-EventQueue: ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 2
S ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 6
S ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
K ArrayIndexOutOfBoundsException: 0 Java Basics - Anfänger-Themen 4
Luk10 ArrayIndexOutOfBoundsException .... Java Basics - Anfänger-Themen 2
X Probleme mit ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 7
B Fehlermeldung: "ArrayIndexOutOfBoundsException"??? Java Basics - Anfänger-Themen 3
H java.lang.ArrayIndexOutOfBoundsException: 0 >= 0 Java Basics - Anfänger-Themen 5
N ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 7
U ArrayIndexOutOfBoundsException - dringend Hilfe gesucht Java Basics - Anfänger-Themen 8
S java.lang.ArrayIndexOutOfBoundsException: 5 nur wieso? Java Basics - Anfänger-Themen 2
T ArrayIndexOutOfBoundsException ? Matrizenrechnung. Java Basics - Anfänger-Themen 3
B ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
T ArrayIndexOutOfBoundsException finde den Auslöser nicht Java Basics - Anfänger-Themen 5
G ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 11
V java.lang.ArrayIndexOutOfBoundsException: Java Basics - Anfänger-Themen 3
E 2 Prob.:"ArrayIndexOutOfBoundsException" & do- Java Basics - Anfänger-Themen 2
Z Warum habe ich eine ArrayIndexOutOfBoundsException? Java Basics - Anfänger-Themen 2
N ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 2
S ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 3
N ArrayIndexOutOfBoundsException...... Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben