1

我正在尝试访问数组列表的当前索引,但无法通过以下方法弄清楚如何做到这一点:

public String getNextMessage(){
    String s = getMessageArray(index);
    index++;
    return s;
}

“getMessageArray”出现错误,我不知道如何解决它。此方法适用于 Arrays[],但我不知道如何使用 ArrayList。这是整个类文件:

package com.game.main;

import java.util.ArrayList;

public class Message {

private int index;
private ArrayList<String> messageArray;

private String intro = "Welcome.";

public Message() {
    messageArray = new ArrayList<String>();
    messageArray.add(intro);
}

public String getNextMessage(){
    String s = getMessageArray(index);
    index++;
    return s;
}

public ArrayList<String> getMessageArray() {
    return messageArray;
}

public void setMessageArray(ArrayList<String> messageArray) {
    this.messageArray = messageArray;
}
}
4

3 回答 3

1

我想你的第一行getNextMessage()应该是:

String s = getMessageArray().get(index);

没有这样的方法:getMessageArray(int)在你的课上。它是带有 0-arg 的方法,它返回一个ArrayList,您可以在该方法上使用该List#get(int)方法访问某个索引处的值。

实际上,您可以messageArray直接在该方法中直接访问,因为它仅在同一个类中。因此,该行可以更好地写为:

String s = messageArray.get(index);

现在,假设您在获取该索引处的值和返回该值之间没有做任何事情,除了增加索引之外,您可以将您的方法缩短为单行:

public String getNextMessage(){
    return messageArray.get(index++);
}
于 2013-06-08T20:27:36.800 回答
1

正如我在之前的回答中所写

public String getNextMessage(){
    String s = messages.get(indx);
    indx++;
    return s;
}

但是,您似乎更改了访问列表的部分

String s = messages.get(indx);

String s = getMessageArray(index);

您的版本不起作用的原因是,您试图调用一个名为 getMessageArray(index) 的方法,该方法返回 ArrayList 对象本身,它是一个 ArrayList。您真正想要做的是调用 ArrayList 类的 get() 方法。

你已经在你的班级前面声明了一个名为messages的变量

private ArrayList<String> messages;

在这里您可以看到消息的类型为ArrayList。ArrayList 有一个名为get(int index)的方法,它检索指定索引处的元素。

您可以按照我在此答案开头所写的方式调用此方法。

作为参考,您可以在此处查看 arraylist 上可用的所有方法。

于 2013-06-08T20:44:15.020 回答
0

代替

getMessageArray(index); 

getMessageArray.get(index);  

您必须首先获取数组列表,然后指定要获取的索引。

于 2013-06-08T20:26:13.320 回答