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また、額面に乱数を割り当て、サイコロをランダム化するために使用するロール メソッドを持つ基本クラスもあります。

出力:

run: プレイヤー数を入力します。1 サイコロの数を入力します。4 [5, 4, 6, 6] 5 9 15

唯一の問題は、現在プレイヤーの数を変更しても効果がないことです。21

4

1 に答える 1

0

#diceすべてのプレーヤーに対して繰り返したい場合は、while ループの外で別のループを使用することをお勧めします。

for(int i:rolls)--> this ステートメントは、ループの反復ごとに、ロール内の値が y に割り当てられることを意味するものとして読み取られます"for each integer 'i' in rolls"

そして、これは

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