gpt4 book ai didi

java - 如何以正确的方式创建对象数组?

转载 作者:行者123 更新时间:2023-12-02 01:05:30 24 4
gpt4 key购买 nike

所以我刚刚开始在 Java 中使用对象,我听说你可以创建一个对象数组,但我遇到了一些问题。

public class Minesweeper {

static int Turns;
static boolean Won;
static String Name;
static int Winnings;
public Minesweeper(boolean won, int turns,String pName,int score){
Turns=turns;
Won=won;
Name=pName;
Winnings=score;

}

public static void main(String[] args) {

Scanner inpt = new Scanner(System.in);
int pl=0,again,respd;
String ans;
String pName;
Minesweeper [] player= new Minesweeper[20];

do{

again=0;
respd=0;

System.out.println("What's your name?");
pName=inpt.next();


Won=false;
Turns=0;

play(inpt);

System.out.println("");
System.out.println("Play Again?");

ans = inpt.next();
if(ans.charAt(0)=='y'||ans.charAt(0)=='Y'){
again=1;
}
else{
again=0;
}

player[pl]= new Minesweeper(Won,Turns,pName,Winnings);
pl++;

}while(again==1);

System.out.println("Won?:\tName:\tTurns:\t:Score:");
for(int i=0;i<pl;i++){
System.out.println(player[i].Won+"\t"+player[i].Name+"\t"+player[i].Turns+"\t"+player[i].Winnings);
}

}

它只是重复输出最后一个玩家的分数(因为循环),我希望它打印每个玩过游戏的玩家。

我需要更改哪些行

整个代码 https://pastebin.com/hX1kEYcQ

最佳答案

您打算存储每个玩家数据的字段是静态。这与它们的预期用途相矛盾。

如果您的类有 5 个实例,static int Turns; 会使该字段仅存在一次。删除 static 将为每个实例提供一个单独的字段,这正是您所需要的。

(顺便说一句,Java 中的字段名称通常以小写字母开头,因此最好使用 turns 而不是 Turns。)

如果你转身

static int Turns;
static boolean Won;
static String Name;
static int Winnings;

进入

int turns;
boolean won;
String name;
int winnings;

您会发现主循环不再工作。

因此,您必须在 main() 中添加局部变量:

int turns = 0;
boolean won = false;
String name;
int winnings;

获胜回合值以及获胜也必须以某种方式以干净的方式获得。 (也许您想让它们成为一个单独的类 GameResult ,由 play() 返回。)

然后你就可以了

    player[pl]= new Minesweeper(won,turns,pName,winnings);

(顺便说一句,名称也许应该放在第一位,但这是风格问题。)

关于java - 如何以正确的方式创建对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60096120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com