java - NextInt 强制关闭

标签 java android random

每当我尝试执行它时,它都会在我的应用程序上给我 FC

int a, b;
Random s = new Random();
    if (diffi.contains("easy") && name.contains("sub")) {
        a = s.nextInt(21);
        b = s.nextInt(a);
    }

但是当删除“a”并在其位置放置一个数字时,它就会开始工作

int a, b;
Random s = new Random();
    if (diffi.contains("easy") && name.contains("sub")) {
        a = s.nextInt(21);
        b = s.nextInt(21);
    }

我希望第二个数字“b”在所有情况下都小于a

最佳答案

如果第一次调用 nextInt 返回 0,您将得到一个异常。然后第二次调用不能返回一个大于或等于 0 的值但小于 0,因此异常(exception)。

来自 Random.nextInt 的文档:

Throws: IllegalArgumentException - if n is not positive

不过,您应该退后一步,弄清楚为什么您的诊断方法实际上没有看到这些异常详细信息。您检查过应用程序日志了吗?我希望异常(exception)情况是清楚的,有正确的异常(exception)情况,这将使错误变得相当明显。

编辑:我非常怀疑它实际上是在每当执行代码时抛出异常。相反,我怀疑 或者 该代码执行了很多次(所以最终您会看到 a 为 0 并且将抛出异常)或者 你只是运气不好。

关于java - NextInt 强制关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17132696/

相关文章:

java - spring jsp View 问题

java - 我试图在 Java 上使用 gson 将大量自定义对象写入 json 文件,但它在文件完成之前就被切断了?

android - 如何从捏合中心缩放列表项

java - 用Java创建一个文字游戏(字典文件组织问题)

javascript - 生成不从零开始的范围内的随机整数

java - 如何解析具有以这种方式编写的 unicode 字符的字符串 :\u003C,\u0022

java - JSF应用程序: Open file,无法下载

android - 错误 :Execution failed for task ':app:processDebugGoogleServices' . 安卓

javascript - 错误无法读取未定义的属性 'add'

c - 使用 OMP 中的线程生成相同的随机数