IB Math の内部評価用のプログラムを書いています。
クラス Calc、Gamble、Inventory、Player、および Test があります。フィールド インスタンス変数 Players (コンストラクターでインスタンス化) とメソッド playrounds があり、そこに問題があります。メソッドのソースは次のとおりです。
ArrayList<Player> Players;
public ArrayList<ArrayList<ArrayList<Player>>> playrounds(boolean randombets, double initialmoney, double initialbet,
double betrange, int numberofrounds){
ArrayList<Player> winningPlayers = new ArrayList<>(0);
ArrayList<ArrayList<Player>> m = new ArrayList<>(0);
for(int b = 0; b < numberofrounds; b++){
if(firstround){
firstround = false;
preparePlayersfirst(randombets, initialmoney, initialbet, betrange);
winningPlayers.clear();
winningPlayers.trimToSize();
m.clear();
m.trimToSize();
}
else{
preparePlayersnext(randombets, initialbet, betrange);
}
for(int a = 0; a < playingPlayers.size(); a++){
Player u = playingPlayers.get(a);
u.rolldice();
u.checkdice();
Players.set(a, u);
playingPlayers.set(a, u);
}
Player t = getwinningPlayer();
for(int a = 0; a < playingPlayers.size(); a++){
Player u = playingPlayers.get(a);
u.setprofits(t, this);
Players.set(a, u);
playingPlayers.set(a, u);
}
distributegainslosses();
removebankruptPlayers();
winningPlayers.add(t);
m.add(Players);
for(int x = 0; x < m.size(); x++){
for(Player y: m.get(x)){
for(int z = 0; z < y.getdice().size(); z++){
System.out.print(y.getdie(z) + " ");
}
System.out.print("\t");
}
System.out.println();
}
System.out.println();
}
ArrayList<ArrayList<ArrayList<Player>>> results = new ArrayList<>(0);
ArrayList<ArrayList<Player>> t = new ArrayList<>(0);
t.add(winningPlayers);
results.add(t);
results.add(m);
return results;
}
変数 m 内の値を表示する for ループは、次のような出力を提供します
。
6 4
6 4
5 5
5 5
5 5
6 1
6 1
6 1
6 1
予想される出力は次のようなものです:
2 3
2 3
6 4
2 3
6 4
5 5
2 3
6 4
5 5
6 1
値を出力する方法が間違っていないことはわかっています。重複を印刷しません。if(firstround) と else は問題とは関係ありません。
どんな助けでも大歓迎です。
-編集- @NPE
:あなたが提案した場所から解決策の1つを試しました。それでもうまくいきません。私がやったことのコードは次のとおりです。
public ArrayList<Player> clonePlayers(){
ArrayList<Player> clone = new ArrayList<>(0);
for(Player a: Players){
clone.add(new Player(a));
}
return clone;
}
私は何か間違ったことをしましたか?