需要java中数组的帮助吗
我正在研究这个代码
import java.util.*;
public class JavaRandomMath {
public static void main (String [] args)
{
Random rand = new Random();
int freq[] = new int [5];
for (int roll = 0; roll <= 5; roll++)
{
++freq[1 + rand.nextInt(4)];
}
System.out.println("Face\tFrequency");
for (int face = 0; face < freq.length; face++)
{
System.out.println(face + "\t" + freq[face]);
}
}
}
我试着自己理解这一点,除了这一行之外,其余的我都能理解
++freq[1 + rand.nextInt(4)];
它位于第一个for循环中
我试图在那里使用断点来查看后面发生了什么。从调试器中我可以理解的是,每次第一个for循环时,freq数组的索引都会被random分配一个新值。nextInt
我不明白的是整条线。++freq真让我困惑。看起来它在增加?在++freq后面是一个括号[],里面有这个
1 + rand.nextInt(4)
我已经阅读了java中random类的文档。那里的1可能用于添加生成的数字,但为什么它需要在这个[]中,以及[]之前的++freq是什么意思
# 1 楼答案
行可以更清楚地写为:
nextInt(4)
从0返回一个值。。包含3,因此结果中添加1(大多数骰子没有0面)++freq[i]
pre将索引i
处的freq
数组中的值递增1# 2 楼答案
你的评估很正确。 您应该删除在nextInt()调用中添加1的操作,以使随机数的范围保持在0之间。。4包括在内,并保持在您的频率数组的范围内
将其更改为:
++freq[rand.nextInt(4)];
rand.nextInt()
通过随机计算要访问的索引(从0到4的随机数),随机选择数组中的元素++freq[index]相当于以下语句:从索引处的freq数组中选择元素,然后将该索引处的值增加1
举个例子。当您第一次声明freq:
int freq[] = new int[5];
时,您将拥有一个包含所有0的数组:freq[] = {0, 0, 0, 0, 0}
然后,在循环中有以下语句:
++freq[rand.nextInt(4)];
让我们假设
rand.nextInt(4)
随机选择3回想一下,数组已初始化为全零,因此
freq[3]
,此时=0,或者:最后,++是一个后增量运算符,它的作用是将freq[3]的当前值增加1,或者:
希望这能增加一些清晰度