SetImageResource随机值不起作用

时间:2013-06-23 07:33:49

标签: android random

我想在我的函数中得到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]);

2 个答案:

答案 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);

注意括号。希望这会有所帮助。