好的,这个程序允许用户输入五个形容词和名词,它们在一个段落中输出。这个游戏有一个特定的名字,通常出现在儿童杂志上,但我现在想不起来名字了。前女友。玛丽跳上了(形容词)马。并飞过_(名词)。
我原以为这一切都会很好地解决,因为没有红线之类的。然而,当我按下"播放"按钮后,一个可爱的错误弹出。
exof error…
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 5, Size: 5
'5'或任何数字(n)是我通过名词TextField在数组中添加的名词的数量。顺便说一下,如果你想知道的话,我正在使用GUI。抱歉,如果物理问题没有意义,我不确定如何表达。
我已经为名词和形容词创建了一个类。
class noun {
String noun;
noun (String _noun) {
noun = _noun;
}
}
class adjective {
String adjective;
adjective (String _adjective) {
adjective = _adjective;
}
}
ArrayList <adjective> small = new ArrayList <adjective>(); //array for adjectives
ArrayList <noun> office = new ArrayList <noun>(); //array for nouns
private void addButtonActionPerformed(java.awt.event.ActionEvent evt) { //stores info
String noun, adjective;
//Take inputted words
noun = nounField.getText();
adjective = adjectiveField.getText();
//Store values in array ADJECTIVE
adjective c = new adjective(adjective);
small.add(c);
//Store values in array NOUN
noun d = new noun(noun);
office.add(d);
}
private void playButtonActionPerformed(java.awt.event.ActionEvent evt) { //play button
String temp = "";
//Allows user to view information from array
for (int x=0; x<=office.size(); x++) {
temp = temp + " paragraph " + office.get(x).noun + "/n";
}
paraTArea.setText(temp); //TextArea where paragraph with nouns etc are outputted
任何帮助或提示将不胜感激!div =)
for循环的上界应该是x <= office.size() - 1
或x < office.size()
,因为索引是从0开始的。
可以将for循环更改为以下任意一种:
for (int x=0; x<=office.size()-1; x++) //As suggested by mre
或
for (int x=0; x<office.size(); x++)