我昨天发布了一个关于我正在编写的一些代码的问题,并且无法使类正确实现接口。感谢这里已经修复的用户的大力帮助,所以我想我可能会再次获得帮助。
我现在遇到了越界异常错误,尽管我对 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++)
并且仍然发生相同的错误:(