Java中的负界
我正在制作一个程序,使用名为Java中的负界,java,arrays,random,Java,Arrays,Random,我正在制作一个程序,使用名为generaleatorio的函数计算一个随机数 public static int generarAleatorio(int l){ java.util.Random X = new java.util.Random(); return X.nextInt(l) ; } 然后,我使用该数字在数组中定位一个值,使用数组的长度作为generaleatorio参数的参数 public static String generarFe
generaleatorio
的函数计算一个随机数
public static int generarAleatorio(int l){
java.util.Random X = new java.util.Random();
return X.nextInt(l) ;
}
然后,我使用该数字在数组中定位一个值,使用数组的长度作为generaleatorio
参数的参数
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)
它告诉我,im发送的绑定不是正的,但据我所知,数组的长度总是相同的,也是正的
这是什么原因?数组的长度不总是正的吗
数组的长度不总是正的吗
就你的情况而言。但是,有问题的调用不使用数组长度,而是使用一个随机数:
generarAleatorio( generarAleatorio(mes.length) )
这里,内部generaleatorio(mes.length)
可能返回0
,在这种情况下,外部generaleatorio(0)
失败
如何解决这个问题取决于你想做什么。以下两种更改都会使错误消失——但是程序的行为将非常不同
mes[generarAleatorio(generarAleatorio(mes.length)+1)]
零不是一个正数(也不是负数),您正在将第一次调用nextInt的结果(可能是零)传递给下一次调用nextInt
mes[generarAleatorio(mes.length)]