2014-02-14 4 views
1

Имея некоторые трудности с использованием итеративной переменной, используемой для выхода из цикла, для использования для поиска среднего количества возвращаемых значений в 100 раз, когда цикл выполняется. Некоторая предыстория: существует туннель длиной 24 м, необходимый для добычи, прокатывая D6 каждую неделю. На 6 туннель разрушается, и вы должны перезапустить. Для каждого значения на кости вы заработали так далеко (плюс на предыдущей неделе). Сколько времени потребуется, чтобы очистить туннель? Я пытаюсь найти среднее значение этого в 100 попытках.Возьмите итеративную переменную из цикла for

import java.util.Random; 

class avgD6{ 
    public static void main(String[] args){ 
    int sum = 0; 
    for(int x = 0;x<101;x++){ 
     int progress = 0; 
     for(int i = 0; i>=0;i++){ 
     Random rand = new Random(); 
     int d = rand.nextInt(6)+1; //roll of a six-sided die 
     if(d==6){ 
      progress = 0; //progress resets, tunnel collapses 
     } 
     else{ 
      progress+=d; 
     } 
     if(progress>=24){ 
      //System.out.println("The weeks it took was: "+i); 
      break; 
     } 
     } 
     sum+=i; 
    } 
    double avg = sum/x; 
    System.out.println(avg); 
    } 
} 
+1

Это может быть несвязанным, но в общем случае вы не хотите продолжать использовать новую «Случайную» на каждой итерации цикла - просто используйте один и тот же экземпляр «Случайный» для всего. –

ответ

1

Объявите переменные непосредственно перед циклом for, что перебирает их, так что их объем больше, и их можно увидеть, когда они ссылаются позже.

int x = 0; 
for(x = 0;x<101;x++){ 

и

int i = 0; 
for(i = 0; i>=0;i++){ 

Тогда sum+=i; оператор могут видеть i и double avg = sum/x; может видеть x.

Кроме того, имейте в виду, что разделение двух int s на Java должно быть int, поэтому любая десятичная часть усечена, например. 15/10 есть 1, а не 1.5. Отбросьте одно из чисел до double, чтобы заставить деление с плавающей запятой.

double avg = (double) sum/x; 
+1

Заметим также, что для (x = 0; x <101; x ++) {будет дано 101 итерации. – HankCa

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