【问题标题】:Random.nextInt creates out of bound integersRandom.nextInt 创建超出范围的整数
【发布时间】:2015-03-12 22:06:00
【问题描述】:

我正在尝试 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 打印得很奇怪! \

【问题讨论】:

    标签: java android random


    【解决方案1】:

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

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

    randomNum + " " + lyrics[randomNum]
    

    【讨论】:

    • 就是这样!您也可以使用不易出错的String.format(),例如String.format("%d %s", randomNum, lyrics[randomNum])
    • @rgettman 你是快兄弟! :) 感谢您的澄清。你是对的!
    猜你喜欢
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 2012-10-24
    相关资源
    最近更新 更多