0

我想在我的函数中获取 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]);
4

2 回答 2

1

(int) Math.random()首先执行并且总是返回 0。然后将 NUM_IMAGES 乘以 0 仍然返回 0。

您应该在表达式周围添加括号,以便int在乘法之后完成转换:

int n = (int) (Math.random()*NUM_IMAGES);
于 2013-06-23T07:42:32.697 回答
0

如果您阅读此处, 的优先级type cast高于乘法。(bracket)的优先级()也高于类型转换的优先级。所以正确的方法可能是将乘法放在括号中,以便在转换之前进行乘法运算。就像是:

int n = (int)(Math.random() * NUM_IMAGES);

注意括号。希望这可以帮助。

于 2013-06-23T07:38:36.367 回答