Я вчера отправил вопрос о каком-то коде, который писал, и у меня были проблемы с тем, чтобы класс правильно реализовал интерфейс. Благодаря большой помощи пользователей здесь, это было исправлено, и поэтому я подумал, что смогу снова получить помощь.
У меня сейчас проблема с ошибкой вне пределов и, насколько я понимаю, в чем проблема, хотя я совершенно новичок в Java.
Приложение отображает клавиши пианино, которые позволяют пользователю нажимать на них, и сохраняет порядок, в котором они были нажаты, и мидикод нот для определенного звука. Затем, когда пользователь нажимает кнопку воспроизведения, он вызывает мелодию в порядке сохранения заметок. Я использую список массивов для хранения заметок, а затем хочу вызвать их, когда пользователь нажимает кнопку воспроизведения, которая вызывает метод «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
Любая помощь с этим была бы отличной, заранее спасибо :)
Я также приложу все усилия, чтобы предоставить любую необходимую дополнительную информацию:)
EDIT: изменен цикл for на
for(k = 0; k < Notes.size(); k++)
И та же ошибка все еще происходит: (