每当我尝试执行此操作时,都会在我的应用程序上给我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的值,因此是异常。

Random.nextInt的文档中:


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


不过,您应该退后一会,找出为什么您的诊断方法实际上看不到那些异常详细信息。您检查应用程序日志了吗?我希望可以清楚地看到异常,并带有正确的异常,这样就可以很清楚地知道出了什么问题。

编辑:我非常怀疑它实际上在执行该代码时会引发异常。相反,我怀疑该代码执行了很多次(因此最终您会看到a为0并抛出异常),或者您只是不幸。

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

10-14 09:53