1

我正在尝试制作一个程序,该程序接受输入#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] 5 9 15

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

4

1 回答 1

0

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

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

这相当于

for(int j=0;j<rolls.size();j++){
   i = rolls[j];
   // Other statements goes here.
}
于 2012-10-31T02:14:29.003 回答