我想将名为iD的int与myArrayList的索引进行比较。如果存在匹配项(iD = 1,并且该索引处有一个元素),我想向该字符串myName分配该位置处的项目值。为此,我使用了:

for (int i =0; i <myArrayList.size (); i++) {
    if (iD == i) {
      myName = myArrayList.get(i);
    }


但是我在这一行收到错误“无法从MyObject转换为String”:

myName = myArrayList.get(i);


这是完整的代码:

int iD = 1;
String myName;


public class MyObject
{
  public String name;

  public  MyObject( String name)
  {
    this.name = name;
  }

  @Override
    public String toString()
  {
    return (name);
  }
}


ArrayList<MyObject> myArrayList = new ArrayList<MyObject>();

void setup()
{
  size(100, 60);
  myArrayList.add(new MyObject("a"));
  myArrayList.add(new MyObject("b"));
  myArrayList.add(new MyObject("c"));
  for (int i =0; i <myArrayList.size (); i++) {
    if (iD == i) {
      myName = myArrayList.get(i);
    }

    System.out.println(myArrayList);
    myArrayList.removeAll(myArrayList);
  }
}


我不明白为什么会收到此错误,因为myName是一个字符串,而ArrayList包含字符串。
谁能帮我解决这个问题?

谢谢你的帮助

最佳答案

实际上,您的arrayList包含“ MyObject”。尝试调用toString方法。

myName = myArrayList.get(i).toString();

要么

myName = myArrayList.get(i).name
因为名字是公开的。

10-05 21:30