2015-01-25 6 views
0

Я новичок в Java, и я пытаюсь сделать arraylist.Java arraylist бросает кости

Я сделал небольшую программу, которая запрашивает у пользователя количество кубиков катиться:

System.out.println("How many dices do you want to throw?"); 
    int diceAmount = input.nextInt(); 

я сделал петлю для печати кубики, но я не могу получить его, чтобы сделать количество кубиков быть случайным. Я должен подсчитать общее количество кубиков со случайными результатами также:

for (int i = 1; i <= diceAmount; i++) { 
      System.out.print(i + "-"); 
+0

Я видел ваш комментарий, что вы хотите знать, как суммировать числа. Поэтому я обновил ответ, добавив эту часть. –

ответ

0

Использование Math.random() для рандомизации вашего количества кубиков. Существует много перегруженной версии метода random(). Читайте о Java.Math в документации Oracle.

+0

Как создать количество случайных кубиков, вводимых пользователем? Как и пользовательские входы 5, мне нужно напечатать 5 случайных чисел –

2
Random rand = new Random(); 

(int i = 1; i <= diceAmount; i++) { 
    // roll the dice once 
    int roll1 = rand.nextInt(6) + 1; 
    System.out.print(i + "-" + roll1); 
} 

UPDATE:

Вот способ суммировать числа. Итак, скажем, вы каждый раз бросаете 2 кубика.

Random rand = new Random(); 
    // roll the dice once 
    int roll1 = rand.nextInt(6) + 1; 
    int roll2 = rand.nextInt(6) + 1; 
    sum = roll1 + roll2; 
    System.out.println("You got " + sum + ". Not bad!"); 
1

Для каждого броска вы хотите получить случайное число (предположительно 1-6, если это традиционная матрица). Таким образом, ваш цикл правильно, но тело цикла нуждается в установке:

for(int i = 0; i < diceAmount; i++){ //repeats diceAmount times 
    //Do loop stuff. 
} 

Чтобы получить случайное число, начать с Math.random(). Это вернет случайный double в диапазоне [0 .. 1). Это означает, что 0 - действительный доход, но 1 - нет. Оттуда мы хотим, чтобы растянуть диапазон, чтобы идти до 6.

Math.random() * 6 

Возвращает случайное двойной в диапазоне [0 ..6). Нам нужны целые числа, а не парные, поэтому давайте сделаем это.

(int)(Math.random() * 6) 

Возвращает случайное INT в диапазоне [0 .. 6) ->[0 .. 5]. Оттуда, просто добавьте 1.

(int)(Math.random() * 6) + 1 

будет возвращать случайный Int в диапазоне [1 .. 6], что именно ваша цель. Итак, все вместе:

for(int i = 0; i < diceAmount; i++){ 
    int dieRoll = (int)(Math.random() * 6) + 1; 
    System.out.println(dieRoll); 
} 
+0

Спасибо, что это отлично работает, но как я могу подсчитать все кубики, а если кубик ниже 2, я снова скачу эти кости –

+0

Вам нужно будет использовать ' if', чтобы проверить, является ли 'dieRoll <2', и, возможно, перейдем к этому. Дайте ему шанс, и если у вас возникнут проблемы, отправьте еще один вопрос. – Mshnik

+0

Но скажем, что кубик ниже 2, как я могу бросить эти кости, а не все кубики? Я думаю, мне нужно использовать список массивов? –

Смежные вопросы