关于数组的问题

时间:2013-12-09 23:29:05

标签: java

这是我的代码,它完全正常。

import java.util.Random;
class apples
{
    public static void main(String args[])
    {
         Random rand = new Random();
         int frequency[] = new int[7];

         for(int roll = 1;roll < 1000;roll++){
             ++frequency[1+rand.nextInt(6)];
         }

         System.out.println("Face\tFrequency");

         for(int face = 1;face < frequency.length;face++){
             System.out.println(face + "\t" + frequency[face]);
         }
    }
}

我不明白这行代码

++frequency[1+rand.nextInt(6)];

当我删除“++”运算符时,无法编译。我知道它会在从0到5生成的randon数字中加1,但为什么在频率前面有一个“++”?为什么要把“++”运算符放在那里?

4 个答案:

答案 0 :(得分:3)

++运算符正在递增指定索引处的频率。在这种情况下,它与说:

相同
for(int roll = 1;roll < 1000;roll++){
  int index = 1+rand.nextInt(6);
  frequency[index] = frequency[index] + 1;
}

删除++运算符,您将离开:

for(int roll = 1;roll < 1000;roll++){
  frequency[1+rand.nextInt(6)];
}

frequency[1+rand.nextInt(6)]行没有意义;它不是一个操作,它什么都不做。


修改

也许是一个更好的例子:让x成为frequency数组中查找的值。然后原件相当于:

for(int roll = 1;roll < 1000;roll++){
  int x = frequency[1+rand.nextInt(6)];
  ++x; // Equivalent to "x = x + 1"
}

然而,如果删除增量运算符,则结果循环将为:

for(int roll = 1;roll < 1000;roll++){
  int x = frequency[1+rand.nextInt(6)];
  x; // ...what?
}

答案 1 :(得分:0)

没有++的语句会查看数组的内容,但不会对该值执行任何操作。添加++运算符会告诉它增加那里找到的值。

您可能认为frequency[1+rand.nextInt(6)]正在为数组添加值。它不是。它正在从随机位置查找内存中的位置。

答案 2 :(得分:0)

++是

的简写
int i = 1+rand.nextInt(6);
frequency[i] = frequency[i] + 1;

删除它会导致不执行增量表达式。

答案 3 :(得分:0)

该行等同于此行代码

int index = 1+rand.nextInt(6);
frequency[index] = frequency[index]+1 ;

所以如果你删除'++',你就会使声明不完整,如下所示:

 int x= 5;
 x;

所以它会给你错误