这是我的代码,它完全正常。
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,但为什么在频率前面有一个“++”?为什么要把“++”运算符放在那里?
答案 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;
所以它会给你错误