Zum neuen Informatik-Forum >>
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

java.lang.ArrayIndexOutOfBoundsException: 0

 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> Java/JSP
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Java_Anfänger
Gast





BeitragVerfasst am: 24. Apr 2005 01:00    Titel: java.lang.ArrayIndexOutOfBoundsException: 0 Antworten mit Zitat

hallo,

ich bin ganz blutiger java anfänger und kämpfe mit folgendem problem: ich möchte eine java klasse testen, die die primzahlen (nach der methode des eratosthenes) berechnet. die klasse wurde uns als lösung zur verfügung gestellt, aber sie bricht mit

java.lang.ArrayIndexOutOfBoundsException: 101
at SiebEratosthenes.main(sieberatosthenes.java:17)
Exception in thread "main"

ab. ich habe nun nachgelesen, dass dies eine art overflow darstellt. aber warum? wie kann man denn sonst die variable max initialisieren? und eine noch ganz wichtige frage: wie könnte ich die klasse testen ohne auf diese fehlermeldung zu stossen???
ich würde mich riesig über jeden tipp/unterstützung freuen! danke! ciao k

public class SiebEratosthenes {

public static void main(String[] argv) {
int max=101;
boolean[] feld = new boolean[max];
int i;

for(i=2; i<max; i++) feld[i]=true;

feld[i]=false;

for(i=2; 2*i<max; i++) {
int j;
j=2;
while (i*j<max) {
feld[i*j]=false;
j++;
}
}
for (i=1; i<max; i++) if(feld[i]) System.out.println(i);
}
}
Nach oben
kurellajunior
Administrator


Anmeldungsdatum: 14.02.2005
Beiträge: 214
Wohnort: Berlin-Pankow

BeitragVerfasst am: 25. Apr 2005 10:43    Titel: Re: java.lang.ArrayIndexOutOfBoundsException: 0 Antworten mit Zitat

Dieser Fehler tritt auf, wenn Du ein Array mit einer Adresse ansprichst, die es nicht hat. In Deinem Fall sprichst Du mit "101" die 102. Stelle des Arrays an (Bei 0 beginnend).
Habe den Kommentar in den Code geschrieben.
Code:

public class SiebEratosthenes {

    public static void main(String[] argv) {
        int max=101;
        boolean[] feld = new boolean[max];
        int i;
        // Diese Schleife zählt solange i kleiner 101 ist. Nach dem Verlassen der Schleife
        // ist i=101 !!! sonst würde die Schleife ja nicht abbrechen
        for(i=2; i<max; i++) feld[i]=true;
        // i ist 101. Das feld[] geht aber nur von 0 bis 100 !
        // Hier tritt Dein Fehler auf, diese Zeile ist unsinnig!
        // feld[i]=false;
       
        for(i=2; 2*i<max; i++) {
            int j;
            j=2;
            while (i*j<max) {
                feld[i*j]=false;
                j++;
            }
        }
        for (i=1; i<max; i++) if(feld[i]) System.out.println(i);
    }
}

Sieh Dir bitte unbedingt die genaue Funktionsweise von Schleifen an und bitte bitte verwende Schleifenvariablen nie! außerhalb der Schleife stattdessen lieber
Code:
for(int i=2; i<max; i++) feld[i]=true;
Damit vermeidest Du solche Fehler von vorherein Augenzwinkern

Ich hoffe Das hilft, Jan

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> Java/JSP Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen