gpt4 book ai didi

java - Java 中的负界

转载 作者:行者123 更新时间:2023-12-02 09:15:46 26 4
gpt4 key购买 nike

我正在编写一个程序,使用名为 generarAleatorio 的函数计算随机数。

public static int generarAleatorio(int l){
java.util.Random X = new java.util.Random();
return X.nextInt(l) ;
}

然后,我使用该数字来定位数组内的值,并使用数组的长度作为 generarAleatorio 参数的参数

public static String generarFecha(){

int[] dias={1,2,3,4,5,6,7,8,9,10,
11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30};

int[] mes={1,2,3,4,5,6,7,8,9,10,11,12};

return String.format("%d-%d",dias[generarAleatorio(dias.length)],
mes[generarAleatorio(generarAleatorio(mes.length))]);
}


问题是有时会显示如下所示的异常

Exception in thread "main" java.lang.IllegalArgumentException: bound must be positive
at java.util.Random.nextInt(Random.java:388)
at generadorregistros.GeneradorRegistros.generarAleatorio(GeneradorRegistros.java:70)
at generadorregistros.GeneradorRegistros.generarFecha(GeneradorRegistros.java:108)
at generadorregistros.GeneradorRegistros.main(GeneradorRegistros.java:48)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

它告诉我,发送的 Bound 不是正数,但据我所知,数组的长度始终相同,而且也是正数。

这是什么原因呢?数组的长度不总是正数吗?

最佳答案

Is the length of the array not always positive?

这就是你的情况。但是,有问题的调用不使用数组长度,而是使用随机数:

generarAleatorio( generarAleatorio(mes.length) )

此处,内部 generarAleatorio(mes.length) 可能会返回 0,在这种情况下,外部 generarAleatorio(0) 会失败。

如何解决问题取决于您想要做什么。以下两个更改都会使错误消失 - 但程序的行为将非常不同。

mes[generarAleatorio(generarAleatorio(mes.length)+1)]

mes[generarAleatorio(mes.length)]

关于java - Java 中的负界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59002545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com