Indexoutofboundsexception 当I';我已经检查了参数是否存在?
我通过这段代码获得了IndexOutOfBoundsException,为Minecraft Bukkit API编码:Indexoutofboundsexception 当I';我已经检查了参数是否存在?,indexoutofboundsexception,minecraft,bukkit,Indexoutofboundsexception,Minecraft,Bukkit,我通过这段代码获得了IndexOutOfBoundsException,为Minecraft Bukkit API编码: if(args.length == 0){ p.sendMessage(ChatColor.DARK_RED + "Wrong syntax. Correct syntax: /mi addpower <Name Identifier of Item> <Power> <EventType>"); retur
if(args.length == 0){
p.sendMessage(ChatColor.DARK_RED + "Wrong syntax. Correct syntax: /mi addpower <Name Identifier of Item> <Power> <EventType>");
return;
}
String displayName = args[0];
if(args.length == 1){
p.sendMessage(ChatColor.DARK_RED + "Wrong syntax. Correct syntax: /mi addpower <Name Identifier of Item> <Power> <EventType>");
return;
}
//Arg 2 is eventtype
try {
eventType = EventType.valueOf(args[1].toUpperCase());
}catch(IllegalArgumentException e){
p.sendMessage(ChatColor.RED + "Such an EventType does not exist!");
return;
}
if(args.length == 2){
p.sendMessage(ChatColor.DARK_RED + "Wrong syntax. Correct syntax: /mi addpower <Name Identifier of Item> <Power> <EventType>");
return;
}
//Arg 2 is power
Power power = getPower(args[2]);
if (power == null) {
p.sendMessage(ChatColor.RED + "That power does not exist!");
return;
}
Vector<String> a = new Vector<String>(Arrays.asList(args));
for(String string : a){
p.sendMessage(string);
}
a.remove(0);
a.remove(1);
a.remove(2); //When I try to remove the second element it gives me the exception.
args = a.toArray(new String[a.size()]);
power.powerCommand(p, displayName, eventType, args);
if(args.length==0){
p、 sendMessage(ChatColor.DARK_RED+“语法错误。语法正确:/mi addpower”);
返回;
}
字符串displayName=args[0];
如果(args.length==1){
p、 sendMessage(ChatColor.DARK_RED+“语法错误。语法正确:/mi addpower”);
返回;
}
//arg2是事件类型
试一试{
eventType=eventType.valueOf(args[1].toUpperCase());
}捕获(IllegalArgumentException e){
p、 sendMessage(ChatColor.RED+“这样的事件类型不存在!”);
返回;
}
如果(args.length==2){
p、 sendMessage(ChatColor.DARK_RED+“语法错误。语法正确:/mi addpower”);
返回;
}
//arg2是电源
Power Power=getPower(参数[2]);
if(幂==null){
p、 sendMessage(ChatColor.RED+“电源不存在!”);
返回;
}
向量a=新向量(Arrays.asList(args));
for(字符串:a){
p、 发送消息(字符串);
}
a、 移除(0);
a、 移除(1);
a、 移除(2)//当我试图删除第二个元素时,它会给我一个异常。
args=a.toArray(新字符串[a.size()]);
powerCommand(p,displayName,eventType,args);
我不明白为什么会这样?我检查参数是否存在,然后尝试删除它们,那么为什么会发生此错误?
remove
修改集合的计数,从而修改有效索引的范围
如果args
的长度为3,则
Vector<String> a = new Vector<String>(Arrays.asList(args));
删除第一个元素,因此将计数更改为2
。有效的索引现在是0和1
a.remove(1);
删除集合的第二个元素(注意这是args
中的第三个元素,而不是第二个)。a
的计数现在是1,因此0是唯一有效的索引
a.remove(2);
当索引超出范围时引发异常
如果要删除前三个元素,可以使用:
String first = a.remove(0);
String second = a.remove(0);
String third = a.remove(0);
remove
减少集合的计数,从而减少有效索引的范围。这是什么意思?
String first = a.remove(0);
String second = a.remove(0);
String third = a.remove(0);