2016-11-21 266 views
1

嘿我工作的一些代码,想用更改ArrayList中类的整数值?

arrayListName.get(index).variableName 

改变存储类的的ArrayList一个整数值,在我的代码,我已经访问类的不同实例没有问题,也没有尝试设置他们

arrayListName.set(index).variableName = X; 

但设置似乎想参数改变数组列表保存原始数据,而不是类等

这是我的代码

//ARRAYLIST DECLARATION 
ArrayList<Ship> ship_arraylist = new ArrayList<Ship>(); 

void setup() { 
    //ARRAYLIST INITIALIZE 
    ship_arraylist = new ArrayList<Ship>(); 
    //LOAD DATA 
    loadData(); 
}//end Setup() 

void loadData() { 
    String[] lines = loadStrings("Data.csv"); // files must be in the data folder 

    for (int i = 0; i<lines.length; i++) { 
    ship_arraylist.add(new Ship(lines[i])); 
    }// end for loop 
}// end loadData 

class Ship { 
    int Alive=0;//1=Alive 0=Dead 

    Ship(String line) { 
    String[] parts = line.split(","); 
    Alive = int(parts[1]); 
    } 
} 

然后,我有一个的mouseClicked功能,因此,如果被点击一艘船活着被设置为0,也许应该使用布尔本但它只是一个进展中的工作大ATM,我已经试过了.setVariableName( )之前,它给了一个

"setVariableName(int)" does not exist 

真的很感谢帮助!

+0

你可以发布你的代码吗? – pleft

+0

你认为'arrayListName.set(index)'做了什么? –

回答

0

你说你有一个ArrayList中的对象,所以你需要获取对象ArrayList中,然后设置其变量

arrayListName.get(index).setX(X); 
1

好了,如果你ArrayList包含了你可以做到这一点的对象(假设variableNamepublic):

arrayListName.get(index).variableName=x; 

ArrayList只包含的对象交易,并改变包含对象的属性值不设在数组列表中的值,但对包含3 ned对象。

set方法仅用于设置列表中指定索引处的项目,在您的情况下,用另一个替换Ship

arrayListName.set(index, new Ship()); 
+0

这工作完美!太感谢了 ! –

1

比方说,你有一个这样的类:

class MyClass{ 
    int x = 0; 
} 

可以这样创造的MyClass一个实例:

MyClass mc = new MyClass(); 

,你可以设置该实例里面的x变量像这样:

mc.x = 42; 

同样,我们可以创建一个ArrayList并添加MyClass一个实例吧:

ArrayList<MyClass> mcList = new ArrayList<MyClass>(); 
mcList.add(new MyClass()); 

现在,在ArrayList设置的MyClass实例的x变量在一个特定的指数,你可以把它作为两个步骤:

MyClass mc = mcList.get(0); //get the MyClass instance 
mc.x = 42; //set the x variable 

可以缩短到一个单一的线路是:

mcList.get(0).x = 42;