Spigot Error: java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0?

2 Antworten

Wenn in dem args-Array garkein Element ist, und du mit args[0] auf das erste Element zugreifen willst, dann wirft das natürlich einen Error.

Überprüfe einfach die Länge des Arrays, um zu sehen, wieviele Argumente übergeben wurden:

if (args.length == 1) { ... }

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf
Zopnote 
Fragesteller
 18.03.2022, 16:16

Danke für die Antwort, ich habe es angewendet, und es funktioniert. Aber wie frage ich das 2., das 3., etc. Argument ab?

0
MrAmazing2  18.03.2022, 17:29
@Zopnote

if (args.length == 2) { ... }

if (args.length == 3) { ... }

...

args.length liefert die Länge des Arrays, also die Anzahl der übergebenen Argumente.

Du kannst dann mit == <zahl> überprüfen, ob eine bestimmte Anzahl übergeben wurde.

Beispielsweise wenn args.length == 3, dann wurden 3 Argumente übergeben.

1

Anders als bei JavaScript, ist das Ergebnis eines nicht-vorhandenen Array-Eintrags nicht undefined sondern es gibt einen Fehler beim Versuch dabei zuzugreifen.

Du musst also den Fall args.length = 0 abfangen.

Woher ich das weiß:Berufserfahrung – Programmierer
Zopnote 
Fragesteller
 18.03.2022, 15:58
Danke für die Antwort, aber wie wende ich es auf weitere Argumentpositionen also "args[1].length() == 0" funktioniert nicht. Und bei "args[1].length == 0" sagt IntelliJ "cannot resolve symbol length" Aber die Abfrage "args.length == 0" funktioniert.
0
Zopnote 
Fragesteller
 18.03.2022, 16:00

Als Info muss ich noch sagen, dass ich sehr neu mit Bukkit bin.

0
Ecaflip  18.03.2022, 16:10
@Zopnote
if(args != null && args.length != 0){
  if (args[0].isEmpty()){
    // Dein Code
  }
}
0