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.
Als Info muss ich noch sagen, dass ich sehr neu mit Bukkit bin.
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.
Danke für die Antwort, ich habe es angewendet, und es funktioniert. Aber wie frage ich das 2., das 3., etc. Argument ab?