在for-loop out中使用可迭代变量时遇到一些困难,以便用于查找循环的平均返回值量100次。一些背景:每周需要通过滚动D6来开采24米长的隧道。在6,隧道崩溃,你必须重新启动。对于骰子上的每个值,你已经挖掘了那么远(加上前一周)。清理隧道需要多长时间?我试图在100次尝试中找到平均值。
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);
}
}
答案 0 :(得分: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
。
另外,请注意Java中两个int
的分区必须是int
,因此任何小数部分都会被截断,例如15/10
为1
,而不是1.5
。将其中一个强制转换为double
以强制浮点除法。
double avg = (double) sum / x;