-1

好的,所以这个程序允许用户输入五个形容词和名词,然后在一个段落中输出。这个游戏有一个特定的名字,通常在儿童杂志上找到..但这个名字现在让我忘记了。前任。“玛丽跳上(形容词)马。飞过_(名词)。

现在我认为这一切都会很好地解决,因为没有红线之类的。但是,当我按下“播放”按钮后,会弹出一个可爱的错误。

前错误...

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

'5' 或任何数字 (n) 是我通过名词 TextField 添加到数组中的名词数。顺便说一句,如果您想知道的话,我正在使用 GUI。抱歉,如果物理 questino 没有意义,我不知道该怎么说。

我为名词和形容词创建了一个类。

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

任何帮助或提示将不胜感激!=)

4

2 回答 2

4

for 循环的上限应该是x <= office.size() - 1,或者x < office.size()因为索引是从 0 开始的。

于 2013-06-03T18:32:19.070 回答
0

您可以将 for 循环更改为以下任一:

for (int x=0; x<=office.size()-1; x++) //As suggested by mre

或者

for (int x=0; x<office.size(); x++) 

请看看这是否有帮助。

于 2013-06-03T18:37:16.507 回答