Code-Problem java.lang.ArrayIndexOutOfBoundsException: 4 - Was ist das Problem?

6 Antworten

Wenn das Programm versucht, auf eine Index-Stelle zuzugreifen die negativ oder größer als der Array selbst ist, wird dieses Exception geworfen.

Dabei sei zu beachten, dass der Index eines Arrays mit 0 beginnt.

0 -> 1. Indexeintrag
1 -> 2. Indexeintrag
2 -> 3. Indexeintrag
...

Nun viel Glück beim Finden des Fehlers. Das sind alle Infos, die Du dafür brauchst.

EDIT: Okay, Du hast es anscheinend schon gelöst... Super

Entschuldige dafür. Hier nochmal der Code mit Tabs.

public static void main(String args[])
{

int T = 2;
boolean[] pass = new boolean[T*2];
int[] Marks = {80, 80, 70, 60};
if(1 <= T && T <= 10) {
for(int i = 1; i <= T * 2; i++) {
if(80 < Marks[i] && Marks[i] <= 100) {
pass[i] = true;
}
else {
pass[i] = false;
}
}
}
}

Ich hab den Fehler gefunden.

Der Array für Marks waren vier zahlen. Aber in der For Schleife hieß es T*2 zählt also hoch bis vier nicht 3 (0,1,2,3) man hängt einfach nur noch ein -1 an das T*2 und das wars schon. Danke trotzdem.

21

Sehr gut, aber keine Angst: Dieser Fehler passiert häufig, aber ist einfach zu finden & zu lösen.

0

Java Primzahlen Programm

Hey Leute, ich habe mal wieder eine Java-Aufgabe, bei welcher ich den Fehler nicht finde. Ich hoffe ihr könnt mir irgendwie weiterhelfen.

public class PrimeNumbers {

static int x = 1000;
private static boolean[] Primes = new boolean[x];

// Hier ist der "statische Konstruktor"
static {
}

private static boolean checkPrime(int number) {

    return false;
}

public static boolean isPrime(int number) {
    int limit=1000;
    int zahl;      
    int zaehler;   
    boolean primzahl; 

    for (zahl = 2; zahl <= limit; zahl++) {
        primzahl = true;

        for (zaehler = 2; zaehler <= zahl/2; zaehler++) {
            if (zahl % zaehler == 0) {
                primzahl = false;
              break;
            }

        }

        if (primzahl) {
            return true;
        }
    }
    return false;
}

Die Primzahlen, welche zu überprüfen sind werden in einer anderen Methode übergeben und abefragt. Ich habe hier das Problem, dass er mir entweder immer true oder immer false returned, egal ob es nun eine Primzahl ist oder nicht. Ich komme einfach nicht weiter, egal wie ich es drehe und wende. Ich hoffe ihr könnt mir weiterhelfen.

Grüße Dubsepp

...zur Frage

The method start() is undefined for the type Threads

Guten Tag,

habe mich heute mal dran versucht ein thread zu erstellen und diesen mit Daten aus der Main was machen zu lassen. Jedoch ist mein Problem das wenn ich .start(); für den thread benutzen will der mir diesen Fehler ausgibt: The method start() is undefined for the type Threads

Hoffe mir kann da einer behilflich sein.

Den Code habe ich auch nur zum Üben und ausprobieren geschrieben daher macht vielleicht nicht alles Sinn..

public class Main {

private static int[] para_temp = {};

  public static void main(String[] args) {
      int t = 2;
      int z = 5;
      int b = 10;
      para_temp = convertIntoIntArray(2,5,8,3,2,3,5,b,z,t);
      NewThread neuerThread = new NewThread(para_temp);
      neuerThread.start();
      for(int i = 0; i<20; i++){
          System.out.println("test: "+i);
      }
     
}
static public int[] convertIntoIntArray(int ...values){
    int[] array = new int[10]; 
    int i = 0;
     for(int x:values){
        array[i] = x;
         i++;
     }
    return array; 
 }

}

public class NewThread implements Runnable {

static int[] para = {};

public NewThread(int[] para){
    this.para= para;
}
@Override
public void run() {
    for(int c = 0; c < para.length ; c++){
        if(para[c] > 0){
            System.out.println("Nummer: " + para[c] +" " +c + " " + (para[c]+c));
        }
    }
}

}

Wenn ich stattdessen .run(); benutze wird es nicht Parallel sondern Nacheinander ausgeführt was ja leider nicht Sinn der Sache ist.

Schon mal vielen dank für jede Hilfreiche Antwort

...zur Frage

Was möchtest Du wissen?