DiceRoll程序使用数组,我怎样才能容纳多个玩家?

时间:2012-10-31 01:56:12

标签: java

我正在尝试创建一个为#players#dice输入输入的程序,并为每个玩家掷骰子任意次数。然后输出卷和总数。

到目前为止,我已经设法开发了一个程序,可以输入与输入的骰子一样多的骰子,并将这些值存储在一个数组中,然后对它进行求和和输出。

不幸的是,我现在陷入困境,因为在尝试让程序每次为新玩家再次执行时,我真的不知道该怎么做。我理解它可能会增加一个,但我真的被复杂性所淹没,甚至不知道我会在网上寻找什么。

这是我的代码:

package diceroll;

import java.util.ArrayList;
import java.util.Scanner;

public class DiceRoll {

public static void main(String[] args) {

int numplayers = 0, numdice = 0; // incrementers for #rolls and #players


  //  ArrayList<ArrayList> players = new ArrayList<ArrayList>();
 //   players.add(rolls);  /// adding list to a list
  //  System.out.println(players);

ArrayList<Integer> rolls = new ArrayList<>(); 

System.out.println("Enter the number of players.");
Scanner scan = new Scanner (System.in);
numplayers = scan.nextInt();

System.out.println("Enter the number of dice.");
numdice = scan.nextInt();

while (numdice > 0 ) {

Die die1 = new Die();
die1.roll();
rolls.add(die1.getFaceValue());

numdice--;}

System.out.println(rolls);


  //  sum for array, but i cant access the arraylength 

int total = 0;
for (int n : rolls)    //what does the colon : do ?
{total += n;

System.out.println("Dice total:" + total);
 }
} 
} 

还有一个基本的Die.java类,它为表面值指定一个随机数,并使用我用来随机化骰子的滚动方法。

输出:

运行: 输入球员数量。 1 输入骰子数量。 4 [5,4,6,6] 五 9 15

唯一的问题是改变目前没有效果的球员数量。 21

1 个答案:

答案 0 :(得分:0)

如果你想为所有玩家重复#dice,你可能想在while循环之外使用另一个循环。

for(int i:rolls) - &gt;这个语句读作"for each integer 'i' in rolls",这意味着,对于循环的每次迭代,roll中的值都分配给y:

这相当于

for(int j=0;j<rolls.size();j++){
   i = rolls[j];
   // Other statements goes here.
}