1

每当我尝试执行此操作时,它都会在我的应用程序上为我提供 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

4

1 回答 1

5

nextInt如果第一次调用返回 0,您将收到异常。然后第二次调用无法返回大于或等于 0 但小于 0 的值,因此出现异常。

从文档中Random.nextInt

抛出: IllegalArgumentException - 如果n不是正数

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

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

于 2013-06-16T11:20:51.307 回答