有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

需要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是什么意思


共 (2) 个答案

  1. # 1 楼答案

    行可以更清楚地写为:

    int face = 1 + rand.nextInt(4);
    freq[face] += 1;
    

    nextInt(4)从0返回一个值。。包含3,因此结果中添加1(大多数骰子没有0面)

    ++freq[i]pre将索引i处的freq数组中的值递增1

  2. # 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];
    

    回想一下,数组已初始化为全零,因此freq[3],此时=0,或者:

    freq[3] = 0;
    

    最后,++是一个后增量运算符,它的作用是将freq[3]的当前值增加1,或者:

     ++feq[3]; is equivalent to:
     freq[3] = freq[3] + 1; is equivalent to:
     freq[3] = 0 + 1; is equivalent to:
     freq[3] = 1;
    

    希望这能增加一些清晰度