2015-09-16 35 views
2

我無法弄清楚如何從一個在arraylist中的類的實例中獲取和設置數組值。有人知道如何?從arraylist中的實例獲取並設置數組值

添加玩家代碼:

此代碼適用於學校賓果遊戲項目。在這個代碼中,「SpelerLijst」是一個賓果玩家列表。這是玩家1和5之間

import java.util.ArrayList; 
import java.util.Random; 

public class BingoPaneel { 
    public BingoPaneel(){ 
     Random rand = new Random(); 
     ArrayList<BingoKaart> SpelerLijst = new ArrayList<BingoKaart>(); 
     //Aanmaken van spelers 
     int spelers = rand.nextInt((5-2 +1)+2); 
     while (spelers == 0){ 
      spelers = rand.nextInt((5-2 +1)+2); 
     } 
     System.out.println(spelers + " Spelers"); 
     for(int i = 0; i < spelers; i++){ 
     SpelerLijst.add(new BingoKaart()); 

     } 

    } 
} 

播放器代碼的隨機量: 這個代碼可以讓玩家命名爲「該地圖」(陣列)25個隨機整數卡多數民衆贊成。

import java.util.Arrays; 
import java.util.Collections; 
import java.util.Random; 


public class BingoKaart { 
    Random random = new Random(); 
    public BingoKaart(){ 
     int[][] kaart = new int[5][5]; 
     System.out.println("Spelerkaart: "); 
     kaart= GetNumer(kaart); 



    } 
    private int[][] GetNumer(int[][] kaart) {  
     for(int i= 0; i < 5 ; i++){ 
      int[] getallen = new int[15]; 
      for(int k= 0; k < 15; k++){ 
       getallen[k] = k + (i*15); 
      } 
      shuffleArray(getallen); 

      for(int j = 0; j < 5; j++){ 
       kaart[i][j] = getallen[j]; 
      } 
     } 

     //KAART PRINTEN 
     for(int i = 0; i < 5; i++){ 
      for(int j = 0; j < 5; j++){ 
       System.out.print(kaart[i][j]+ " "); 
      } 
      System.out.println(); 
     } 
     System.out.println(); 


     return kaart; 
    } 
    static void shuffleArray(int[] ar) 
     { 
     Random rnd = new Random(); 
     for (int i = ar.length - 1; i > 0; i--) 
     { 
      int index = rnd.nextInt(i + 1); 
      int a = ar[index]; 
      ar[index] = ar[i]; 
      ar[i] = a; 
     } 
     } 


} 

主碼: 此代碼運行槽隨機整數,並檢查是否一個玩家有其數組中的數目。

import java.util.Random; 

public class BingoMaster { 

    public BingoMaster(){ 
     //Vars 
     int[] getrokkenGetallen = new int[75]; 
     boolean bingo = false; 

     //Vullen en randomizen trekbare getallen 
     VulGetrokkenGetallen(getrokkenGetallen); 

     System.out.println("Het spel Start!"); 
     while(!bingo){ 
     TrekGetal(getrokkenGetallen); 
     } 

    } 


    private int[] VulGetrokkenGetallen(int[] getrokkenGetallen) {  

     for(int i = 0; i < 75; i++){ 
      getrokkenGetallen[i] = i; 
     } 
     shuffleArray(getrokkenGetallen); 
     return getrokkenGetallen; 


    } 

    private void TrekGetal(int[] getrokkenGetallen) { 
     for(int i = 0; i < 75; i++){ 
      int getal = getrokkenGetallen[i]; 

     } 
    } 

    static void shuffleArray(int[] ar) 
    { 
     Random rnd = new Random(); 
     for (int i = ar.length - 1; i > 0; i--) 
     { 
      int index = rnd.nextInt(i + 1); 
      int a = ar[index]; 
      ar[index] = ar[i]; 
      ar[i] = a; 
     } 
     } 



} 

我只是不知道如何檢查數字是否在播放器的數組中。系統保存選中的號碼是我下一步要做的事情。

+0

這不回答你的問題,但我注意到你有'shuffleArray(INT [] ar)'在'BingoMaster'和'BingoKaart'中。你應該把它放在一個地方(其中一個類,或者一個實用類,如果有意義的話)。 –

回答

1

我只是要指出:

ArrayList<BingoKaart> SpelerLijst = new ArrayList<BingoKaart>(); 

變量通過Java約定不應該大寫,只有類名,其中有很大幫助,在你的代碼的組織。

無論如何,要回答你的問題,我會建立在第一個答案上。

那麼,我可以問,你想在同一個包中訪問它嗎?如果是這樣,所有你需要做的就是保持ArrayList實例的狀態,或者添加protected(因爲嘿,在我看來,受保護的看起來比沒有更酷,同樣的事情也允許子類訪問)。否則,如果它們位於不同的包中,請將其標記爲公共,以便所有類都可以訪問它(實際上,無論如何,您都可以將其標記爲公開,因爲它沒有任何區別,並且從長遠來看它是一個優勢)。

下一步:實例化類

BingoPaneel <var name> = new BingoPaneel(); 

實例化後,你就可以做

bp.SpelerLijst.add(<Something from BingoKaart>); 

訪問的ArrayList。

或者,如果你不喜歡實例(壞主意),你可以把它靜態的,並做

BingoPaneel.SpelerLijst.add(<Something from BingoKaart>); 
0

您需要能夠在班級以外訪問SpelerLijst。將您的SpelerLijst的聲明中BingoPaneel你的構造之外,然後你可以說以下各項

BingoPaneel bp = new BingoPaneel(); 

//do something here with the arrayList by calling bp.SpelerLijst 
0

你應該定義SpelerLijst作爲一個實例變量,構造函數的外部調用它。 添加getter和seters,以便在實例化BingoPanel時可以訪問它。

public class BingoPanel(){ 

List<BingoKaart> spelerLijst; 

public BingoPanel(){ 
spelerLijst=new ArrayList<>(); 
//load all the data. 
} 

//getters and setters.. 

而且在BingoKaart中,INT [] []該地圖時,應申報外,像以前的一個,你正在做的方式,當它完成的構造,該值都將丟失。