Random.nextInt创建超出绑定的整数

时间:2015-03-12 22:06:00

标签: java android random

我正在尝试Android中的基本应用程序。以下代码打印出randomNum的32,33,34和35值。为什么这样做?

Button button = (Button) findViewById(R.id.button);final String[] lyrics = {"Caught in a Landslide!","No"," Escape","From Reality..."};
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Random rando = new Random();
            int randomNum = rando.nextInt(4);
            textView.setText(randomNum + ' ' + lyrics[randomNum]);
        }
    });

P.S。 - 它工作正常,只打印出歌词数组中的值。只是randomNum打印怪异! \

1 个答案:

答案 0 :(得分:7)

在连接到字符串randomNum + ' '之前,首先计算表达式lyrics[random],因为它是从左到右计算的。这两个值都会提升为intchar ' '被提升为int,结果为32。随机数(0-3)加到它上面,产生的范围是32-35。

通过添加String " "而不是char ' '来强制字符串连接正常工作。

randomNum + " " + lyrics[randomNum]