gpt4 book ai didi

java - 如何解决越界异常错误?

转载 作者:行者123 更新时间:2023-12-02 08:04:29 26 4
gpt4 key购买 nike

我昨天发布了一个关于我正在编写的一些代码的问题,并且在使类正确实现接口(interface)时遇到了困难。感谢这里用户的大力帮助,该问题已得到修复,因此我想我可能会再次获得帮助。

我现在遇到了越界异常错误,尽管我对 java 很陌生,但我一生都看不出问题是什么。

该应用程序显示钢琴键,允许用户单击它们,并保存单击的顺序以及特定声音的音符的 midicode。然后,当用户单击播放时,它会按照保存音符的顺序调用曲调。我使用数组列表来存储笔记,然后希望在用户单击“播放”时调用它们,该方法调用“start”方法,然后重复调用“getNextNote”方法,直到没有更多笔记。但是,每当我单击“播放”时,我都会收到越界异常错误。下面是我到目前为止的代码;

import java.util.*;
import mvcchords.*;

public class MyNoteStore implements NoteStore {

public ArrayList<Integer> Notes = new ArrayList<Integer>();
int k;

public void noteAdded(int midicode) {
Notes.add(midicode);
}

public boolean hasNextNote() {
if(Notes.get(k) != null)
return true;
else
return false;
}

public int getNextNote() {

if(hasNextNote() == true)
return Notes.get(k);
else
return 0;
}

public void start(int sortOrder) {

for(k = 0; k < Notes.size(); k++){
hasNextNote();
getNextNote();
}
}
}

下面是当我尝试单击“播放”并存储 3 个音符时出现的错误(尽管无论我存储了多少个音符,错误都是相同的,只是末尾的数字等于我选择的音符数) ):

Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3

对此的任何帮助都会很棒,提前谢谢您:)

我也会尽力提供所需的任何额外信息:)

编辑:将 for 循环更改为

 for(k = 0; k < Notes.size(); k++)

同样的错误仍然发生:(

最佳答案

您正在检查 <= size(),而不是 < size(),这意味着如果 size 为 2,您将查找索引 2(而有效索引为 0 和 1)。

关于java - 如何解决越界异常错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8377384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com