java - Random.nextInt 创建越界整数

标签 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]);
        }
    });

附言- 它工作正常,仅打印歌词数组中的值。只是 randomNum 打印得很奇怪! \

最佳答案

首先对表达式 randomNum + ' ' 求值,然后再连接到字符串 lyrics[random],因为它是从左到右求值的。这两个值都被提升为 intchar ' ' 被提升为 int,产生值 32。将随机数 (0-3) 添加到其中,产生 32-35 的范围。

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

randomNum + " " + lyrics[randomNum]

关于java - Random.nextInt 创建越界整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29021147/

相关文章:

c# - 滚动时 Xamarin.Android 中的 ListView 内存不足

c - 如何使用 C/C++ 预处理器生成一系列随机数

c# - 在 .NET 中模拟 Python 的 random.choice

java - 使用 Java 上传图像无法正确保存在云中

java - 以字符串命名新对象?

java - Eclipse - Android 设备选择器中的目标 "unknown"

android - 如何请求和删除从线程到服务的 locationManager 更新

c - 关于随机整数生成的准则(C)

java - 分支预测不起作用?

java - 结果集为空,虽然 sql 查询没问题