IndexOutOfBoundsException / Try-Catch

Diskutiere IndexOutOfBoundsException / Try-Catch im Allgemeine Java-Themen Bereich.
M

Macklaire

Hey,
ich hätte da mal ne Frage. Ich google seit Stunden und finde meinen Fehler einfach nicht.

In dem Programmausschnitt geht es darum, dass gefragt werden wie viele Spieler teilnehmen. Wenn ich dann zu der Abfrage komme, ob es nicht 0 und maximal 15 Spieler sind und ich eine falsche Eingabe tätige, wirft er mir einen "IndexOutOfBoundsException" Error. Diesen will ich auffangen und den User eine ernuete Spieleranzahl eingeben lassen. Doch er fängt den Fehler einfach nicht auf.

Bisher sieht das so aus:

Java:
try {
            if (anzahlSpieler <= 15 && anzahlSpieler > 0) {

                int i = 0;

                do {

                    i++;

                    System.out.println("Bitte Namen eingeben: ");
                    String name = scanner.next();
                    namensListe.add(name);
                    
                } while (i < anzahlSpieler);
            }
        } catch (IndexOutOfBoundsException e) {
            System.out.println(e);
        }
Ich bedanke mich jzt schonmal für Rückmeldungen ^^
 
M

Macklaire

Das ist noch oben drüber. Aber eigentlich unwichtig uns selbsterklärend ^^
Java:
System.out.println("Bitte Anzahl der Spieler eingeben: ");
        Scanner scanner = new Scanner(System.in);
        int anzahlSpieler = scanner.nextInt();
 
J

JustNobody

Wo genau kommt denn die IndexOutOfBoundsException? Also immer auch den Stacktrace mit ausgeben!

Zeige bitte mal den ganzen Code und nicht nur diese Ausschnitte.

Generell ist das keine Exception, die Du fangen solltest sondern es sollte durch Deinen Code nie zu so etwas kommen. Diese Exception ist eine Exception, die geworfen wird, wenn der Entwickler einen Fehler gemacht hat.
 
M

Macklaire

Okay. Also das ist der ganze Code. Jedenfalls die Klasse in der ie main Methode ist.

Nicht urteilen, ich bin noch Anfänger ^^

Java:
import java.lang.IndexOutOfBoundsException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Maexchen {

    public static void main(String[] args) {

        List<String> namensListe = new ArrayList<String>();
        Spieler spieler = new Spieler();
        int gesamtPunkteSpieler1 = 0;
        int gesamtPunkteSpieler2 = 0;

        System.out.println("Bitte Anzahl der Spieler eingeben: ");
        Scanner scanner = new Scanner(System.in);
        int anzahlSpieler = scanner.nextInt();
        
        try {
            if (anzahlSpieler <= 15 && anzahlSpieler > 0) {

                int i = 0;

                do {

                    i++;

                    System.out.println("Bitte Namen eingeben: ");
                    String name = scanner.next();
                    namensListe.add(name);
                    
                } while (i < anzahlSpieler);
            }
        } catch (IndexOutOfBoundsException e) {
            System.out.println(e);
        }

        for (int runden = 1; runden <= 3; runden++) {
            System.out.println("\n" + namensListe.get(0) + " ist am Zug");
            gesamtPunkteSpieler1 += spieler.getSpielerPunkteInDieserRunde();

            System.out.println("\n" + namensListe.get(1) + " ist am Zug");
            gesamtPunkteSpieler2 += spieler.getSpielerPunkteInDieserRunde();
        }

        if (gesamtPunkteSpieler1 > gesamtPunkteSpieler2) {
            System.out.println("\n´" + namensListe.get(0) + "´ hat das Spiel mit " + gesamtPunkteSpieler1 + " Punkten gewonnen.");
        } else if (gesamtPunkteSpieler1 < gesamtPunkteSpieler2) {
            System.out.println("\n´" + namensListe.get(1) + "´ hat das Spiel mit " + gesamtPunkteSpieler2 + " Punkten gewonnen.");
        } else if (gesamtPunkteSpieler1 == gesamtPunkteSpieler2) {
            System.out.println("\nEs steht unentschieden. Beide haben " + gesamtPunkteSpieler1 + " Punkte.");
        } else {
            System.out.println("\nFehlerhafte Eingabe!");
        }
        scanner.close();
    }
}
 
M

Macklaire

Den obersten import einfach nicht beachten. Den hab ich zu Testzwecken rein, da ich verzweifelt bin xD
 
M

Macklaire

Wo genau kommt denn die IndexOutOfBoundsException? Also immer auch den Stacktrace mit ausgeben!

Zeige bitte mal den ganzen Code und nicht nur diese Ausschnitte.

Generell ist das keine Exception, die Du fangen solltest sondern es sollte durch Deinen Code nie zu so etwas kommen. Diese Exception ist eine Exception, die geworfen wird, wenn der Entwickler einen Fehler gemacht hat.
Wie gebe ich denn Stacktrace aus?
 
J

JustNobody

Das Problem ist, dass du bei ungültiger Spieleranzahl keine Spieler eingibst, aber dann im Anschluss mit zwei Spielern etwas machst. Und die gibt es natürlich nicht.

Du darfst natürlich nur etwas mit den Spielern machen, wenn die auch eingegeben wurden.
 
M

Macklaire

Achsooo. haha ok. Das war dumm.

danke dir. Wäre vermutlich nicht drauf gekommen ^^
 
Thema: 

IndexOutOfBoundsException / Try-Catch

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben