我正在尝试创建一个为#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
答案 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.
}