java.lang.ArrayIndexOutOfBoundsException:1

java.lang.ArrayIndexOutOfBoundsException:1,java,arrays,indexing,Java,Arrays,Indexing,这里怎么了 错误: java.lang.ArrayIndexOutOfBoundsException: 1 at com.rs.game.player.content.SlayerTask.getNewTask(SlayerTask.java:81) SlayerTask.java的第81行: this.currentTaskAmount = amount[Utils.random(low_tasks.length - 1)]; 其反映的金额: this.currentTaskAmount

这里怎么了

错误:

java.lang.ArrayIndexOutOfBoundsException: 1
at com.rs.game.player.content.SlayerTask.getNewTask(SlayerTask.java:81)
SlayerTask.java的第81行:

this.currentTaskAmount = amount[Utils.random(low_tasks.length - 1)];
其反映的金额:

this.currentTaskAmount = -2;
总代码(如果需要): 包com.rs.game.player.content

import java.io.Serializable;

import com.rs.cache.loaders.NPCDefinitions;
import com.rs.game.player.Player;
import com.rs.game.player.Skills;
import com.rs.utils.Utils;
import com.rs.game.npc.*;

public class SlayerTask implements Serializable {
private static final long serialVersionUID = -3885979679549716755L;

private transient static int[] low_tasks = { // 1 - 60
    1648, //crawling hand - slay lvl 1  || Slayer Tower
    1600, //cave crawler  - slay lvl 10 || Fremmy dung
    1612, //banshee -     - slay lvl 15 || Slayer Tower
    1632, //rockslug -    - slay lvl 20 || Fremmy dung
    1616, //basilisk -    - slay lvl 40 || Fremmy dung
    1640, 1637, //jelly   - slay lvl 52 || Fremmy dung, Slayer Tower
    1633 //Pyrefiend                    || Fremmy dung
};
private transient static int[] mid_tasks = { 
    1605, //abarrant spectre  - slay lvl 60 || Slayer Tower
    //dust devil        - slay lvl 65 || Fremmy dung
    //jungle strykewyrm - slay lvl 73 || Fremmy dung
    1610, //gargoyle    - slay lvl 75 || Fremmy dung
    1627, //turoth                    || Fremmy dung
    1609, //kurask                    || Fremmy dung
    1643, //infernal mage             || Fremmy dung
    6215 // bloodveld                 || Slayer Tower
};
private transient static int[] high_tasks = {
    //desert strykewyrm -    slay lvl 77
    1613, //nechryael -            slay lvl 80 || Slayer Tower
    1615, //abyssal demon -        slay lvl 85 || Slayer Tower
    //grifolapine -          slay lvl 88
    2783, //dark beast -           slay lvl 90 || Slayer Tower
    //ice strykewyrm -       slay lvl 93
    //ganodermic creatures - slay lvl 95
};

private transient static int[] amount = { 1};

private int currentTask = -1;
private int currentTaskAmount = 0;

private transient Player player;

public void setPlayer(Player player) {
    this.player = player;
}

public void resetTask() {
    this.currentTask = -1;
    this.currentTaskAmount = -2;
}

public String getName() {
    return NPCDefinitions.getNPCDefinitions(currentTask).getName();
}

public void getNewTask() {
    if (player.getSkills().getLevel(Skills.SLAYER) >= 1 && player.getSkills().getLevel(Skills.SLAYER) <= 59) {
        this.currentTask = low_tasks[Utils.random(low_tasks.length - 1)];
        this.currentTaskAmount = amount[Utils.random(low_tasks.length - 1)];
        player.getPackets().sendGameMessage("59<= Slayer level >= 1");
    }
    if (player.getSkills().getLevel(Skills.SLAYER) >= 60 && player.getSkills().getLevel(Skills.SLAYER) <= 76) {
        this.currentTask = mid_tasks[Utils.random(mid_tasks.length - 1)];
        this.currentTaskAmount = amount[Utils.random(mid_tasks.length - 1)];
        player.getPackets().sendGameMessage("76<= Slayer level >= 60");
    }   
    if (player.getSkills().getLevel(Skills.SLAYER) >= 77) {
        this.currentTask = high_tasks[Utils.random(high_tasks.length - 1)];
        this.currentTaskAmount = amount[Utils.random(high_tasks.length - 1)];
        player.getPackets().sendGameMessage("Slayer level >= 77");
    }
}

public int getCurrentTask() {
    return currentTask;
}

public int getTaskAmount() {
    return currentTaskAmount;
}

public void decreaseTask() {
    this.currentTaskAmount--;
}

public boolean isComplete() {
    return currentTaskAmount < 1;
}

public SlayerTask() {

}
import java.io.Serializable;
导入com.rs.cache.loaders.npcd定义;
导入com.rs.game.player.player;
导入com.rs.game.player.Skills;
导入com.rs.utils.utils;
导入com.rs.game.npc.*;
公共类SlayerTask实现可序列化{
私有静态最终长serialVersionUID=-3885979679549716755L;
私有瞬态静态int[]低_任务={//1-60
1648,//爬行之手-杀戮1级| |杀戮塔
1600,//洞穴爬虫-杀死10级Fremmy dung
1612,//女妖——杀死15级杀手塔
1632,//岩蛞蝓——杀死20级弗雷米粪
1616,//蛇怪——杀死40级弗雷米·邓
16401637,//果冻屠宰52级| | Fremmy dung,屠宰塔
1633//Pyrefind | | Fremmy dung
};
私有瞬态静态int[]中间任务={
1605年//abarrant幽灵-杀死60级杀手塔
//尘暴-杀死65级弗雷米粪
//丛林strykewyrm-杀死73级Fremmy dung
1610,//石像鬼-杀死75级弗雷米·邓
1627,//turoth | | Fremmy dung
1609,//kurask | | Fremmy dung
1643,//地狱法师| |弗雷米·邓
6215//bloodveld | |杀人塔
};
私有瞬态静态int[]高\u任务={
//沙漠strykewyrm-斯雷77级
1613年//nechryael-slay lvl 80 | | Slayer Tower
1615,//深渊恶魔-杀戮85级| |杀戮塔
//grifolapine-slay 88级
2783,//黑暗野兽-杀戮90级| |杀戮塔
//冰斯特里克威姆-斯雷93级
//灵媒生物-杀死95级
};
私有瞬态静态int[]数量={1};
private int currentTask=-1;
private int currentTaskAmount=0;
私人临时玩家;
公共无效设置播放器(播放器){
this.player=player;
}
公共无效重置任务(){
this.currentTask=-1;
此.currentTaskAmount=-2;
}
公共字符串getName(){
返回NPCDefinitions.getNPCDefinitions(currentTask).getName();
}
public void getNewTask(){
如果(player.getSkills().getLevel(Skills.SLAYER)>=1&&player.getSkills().getLevel(Skills.SLAYER)=60&&player.getSkills().getLevel(Skills.SLAYER)=77){
this.currentTask=high_tasks[Utils.random(high_tasks.length-1)];
this.currentTaskAmount=金额[Utils.random(high_tasks.length-1)];
player.getPackets().sendGameMessage(“杀手级别>=77”);
}
}
public int getCurrentTask(){
返回当前任务;
}
公共整数getTaskAmount(){
返回当前任务数量;
}
public void decreaseTask(){
此.currentTaskAmount--;
}
公共布尔值isComplete(){
返回当前任务量<1;
}
公共杀戮任务(){
}
}


我在谷歌上找不到任何可以理解的东西。如果有人能帮我,那就太好了

您已在此处声明了长度为1的数组:

private transient static int[] amount = { 1};
但是,根据您的异常消息,您传入了一个索引
1
,该索引无效。此数组唯一有效的索引是
0

将数组修改为更长,或者修改索引计算,使其不会产生
1

尝试以下操作:

this.currentTask = (lowTasks.length > 1) ? 
        low_tasks[Utils.random(low_tasks.length - 1)] : lowTasks[0];

谢谢你的回答,可能是重复的。但这仍然会产生相同的错误。