首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数组列表中的实例获取和设置数组值

从数组列表中的实例获取和设置数组值
EN

Stack Overflow用户
提问于 2015-09-16 20:48:48
回答 3查看 141关注 0票数 3

我不知道如何从数组列表中的类的实例中获取和设置数组值。一个知道怎么做的人?

添加玩家代码:

这个代码是学校宾果项目的代码。在这个代码中,"SpelerLijst“是一个宾果玩家列表。这是一个随机数量的1到5之间的球员。

代码语言:javascript
复制
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()); 

        }

    }
}

玩家代码:此代码给玩家一张名为“Kaart”(数组)的卡片,其中包含25个随机ints。

代码语言:javascript
复制
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;
        }
      }


}

主代码:这个代码通过随机的in运行,并检查其中一个玩家的数组中是否有数字。

代码语言:javascript
复制
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;
        }
      }



}

我只是不知道如何检查这个数字是否在玩家的数组中。保存检查编号的系统是我下一步要构建的东西。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-16 21:13:28

我只想指出:

代码语言:javascript
复制
ArrayList<BingoKaart> SpelerLijst = new ArrayList<BingoKaart>();

Java约定中的变量不应该只使用大写的类名,这对代码的组织有很大帮助。

无论如何,为了回答你的问题,我将在第一个答案的基础上再接再厉。

那么,首先我可以问一下,您想要在同一个包中访问它的类吗?如果是的话,您所需要做的就是保持ArrayList实例的原样,或者添加保护(因为在我看来,受保护看起来比没有更酷,并且做同样的事情加上允许子类访问)。否则,如果它们在不同的包中,那么将其标记为public,这样所有类都可以访问它(实际上,您可以将其标记为public,因为这没有什么区别,从长远来看,这是一个优势)。

下一步:实例化类

代码语言:javascript
复制
BingoPaneel <var name> = new BingoPaneel();

实例化之后,您可以执行以下操作

代码语言:javascript
复制
bp.SpelerLijst.add(<Something from BingoKaart>);

访问ArrayList。

或者,如果你不想实例化(不好的想法),你可以使它是静态的,然后

代码语言:javascript
复制
BingoPaneel.SpelerLijst.add(<Something from BingoKaart>);
票数 1
EN

Stack Overflow用户

发布于 2015-09-16 20:58:05

您需要能够访问类之外的SpelerLijst。将SpelerLijst的声明移出BingoPaneel中的构造函数之外,然后可以通过以下语句调用它-

代码语言:javascript
复制
BingoPaneel bp = new BingoPaneel();

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

Stack Overflow用户

发布于 2015-09-16 21:04:05

您应该将SpelerLijst定义为构造函数之外的实例变量。添加getter和seters,以便在实例化BingoPanel时访问它。

代码语言:javascript
复制
public class BingoPanel(){

List<BingoKaart> spelerLijst;

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

//getters and setters..

同样在BingoKaart中,int kaart应该在外部声明,就像前面的方法一样,当它完成构造函数时,值就会丢失。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32618399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档