我无法弄清楚如何从一个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());
}
}
}
玩家代码: 此代码为玩家提供了一张名为&#34; Kaart&#34;(数组)的卡片,其中包含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 :(得分:1)
我要指出:
ArrayList<BingoKaart> SpelerLijst = new ArrayList<BingoKaart>();
Java约定的变量不应该只是大写的类名,这有助于组织代码。
无论如何,为了回答你的问题,我将继续第一个答案。
那么,首先我想问一下,您想要在同一个包中访问它的类吗?如果它们是,那么您需要做的就是保持ArrayList实例不变,或添加受保护的(因为在我看来,受保护的看起来比什么都没有,并且做同样的事情并且允许子类访问)。否则,如果他们在不同的包中,将其标记为公开,那么所有类都可以访问它(事实上,您可以将其标记为公开,因为它不会产生任何影响,并且&#39从长远来看,这是一个优势。
下一步:实例化类
BingoPaneel <var name> = new BingoPaneel();
实例化后,您可以执行
bp.SpelerLijst.add(<Something from BingoKaart>);
访问ArrayList。
或者,如果您不想实例化(糟糕的想法),可以将其设为静态,然后执行
BingoPaneel.SpelerLijst.add(<Something from BingoKaart>);
答案 1 :(得分:0)
您需要能够在课堂外访问SpelerLijst
。在BingoPaneel
中将您的SpelerLijst声明移到构造函数之外,然后通过说出以下内容来调用它 -
BingoPaneel bp = new BingoPaneel();
//do something here with the arrayList by calling bp.SpelerLijst
答案 2 :(得分:0)
您应该将SpelerLijst定义为构造函数外部的实例变量。 添加getter和seter,以便在实例化BingoPanel时访问它。
public class BingoPanel(){
List<BingoKaart> spelerLijst;
public BingoPanel(){
spelerLijst=new ArrayList<>();
//load all the data.
}
//getters and setters..
同样在BingoKaart中,int [] [] kaart应该在外部声明,就像前一个,你正在做的方式,当它完成构造函数时,值会丢失。