Spigot Error: java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0?
Hey, ich brauche Hilfe bei einem Javaplugin.
Ich habe im Code die Abfrage gemacht ob Argument 0 gesetzt ist:
if (args[0].isEmpty(){}
Jedoch immer wenn das abgefragt wird kommt dieser Fehler:
lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at varo.zopnote.commands.ban.onCommand(ban.java:17) ~[zopnote-1.0-SNAPSHOT.jar:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[patched_1.17.1.jar:git-Paper-409]
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) { ... }
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.
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.
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.
Als Info muss ich noch sagen, dass ich sehr neu mit Bukkit bin.
Danke für die Antwort, ich habe es angewendet, und es funktioniert. Aber wie frage ich das 2., das 3., etc. Argument ab?