我想在我的函数中得到RANDOM值,但是n总是等于0.我做错了什么?
image = (ImageView) findViewById(R.id.imageView1);
//блок Random
Log.d(Tag, "1");
int NUM_IMAGES=7;
int imageArr[] = new int[NUM_IMAGES];
Log.d(Tag, "2");
imageArr[0] = R.drawable.image1;
imageArr[1] = R.drawable.image2;
imageArr[2] = R.drawable.image3;
imageArr[3] = R.drawable.image4;
imageArr[4] = R.drawable.image5;
imageArr[5] = R.drawable.image6;
imageArr[6] = R.drawable.image7;
Log.d(Tag, "3");
int n = (int)Math.random()*NUM_IMAGES;
Log.d(Tag, "n="+n);
image.setImageResource(imageArr[n]);
答案 0 :(得分:1)
(int) Math.random()
并始终返回0.然后将NUM_IMAGES乘以0仍然返回0.
您应该在表达式周围添加括号,以便在乘法后转换为int
:
int n = (int) (Math.random()*NUM_IMAGES);
答案 1 :(得分:0)
如果您阅读here,则type cast
的优先级高于乘法的优先级。 ()
(括号)的优先级也高于类型转换的优先级。所以正确的方法可能是将乘法放在括号中,以便在转换之前进行乘法运算。类似的东西:
int n = (int)(Math.random() * NUM_IMAGES);
注意括号。希望这会有所帮助。