2016-11-21 167 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;