我正在尝试 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]);
}
});
附言- 它工作正常,仅打印歌词数组中的值。只是 randomNum 打印得很奇怪! \
最佳答案
首先对表达式 randomNum + ' '
求值,然后再连接到字符串 lyrics[random]
,因为它是从左到右求值的。这两个值都被提升为 int
。 char
' '
被提升为 int
,产生值 32
。将随机数 (0-3) 添加到其中,产生 32-35 的范围。
通过添加 String
""
而不是 char
' '
强制字符串连接正常工作。
randomNum + " " + lyrics[randomNum]
关于java - Random.nextInt 创建越界整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29021147/