![](/img/trans.png)
[英]Exception in thread “main” java.lang.SecurityException: Prohibited package name: java.lang
[英]Exception in thread "main" java.lang
我一直在用 Java 进行一些培训,我想制作这个关于 3x5 矩阵中随机数的部分程序,其中与其他列相比,列中的每个数字可能属于不同的一打。
我会做一个更好的解释:
在一行中,您可以有 9 和 11,但不能有 11 和 13,因为它们属于同一打(11-20 之一)。 了解 Tombola 游戏的人都会明白。
但是用cmd编译执行后的主要错误是下面这个,线程main java.lang中的异常。
所以我希望你能帮助我:毕竟我是一个新的 Java 程序员。
线程“main”中的异常 java.lang.IndexOutOfBoundsException:在 java.base/jdk.internal.util.Preconditions.outOfBounds(Unknown Source) at java.base/jdk.internal.util 处,长度为 0 的索引 0 越界.Preconditions.outOfBoundsCheckIndex(Unknown Source) at java.base/jdk.internal.util.Preconditions.checkIndex(Unknown Source) at java.base/java.util.Objects.checkIndex(Unknown Source) at java.base/java.util .ArrayList.remove(Unknown Source) at Sheet.(Sheet.java:20) at Sheet.main(Sheet.java:35)
import java.util.*;
import java.math.*;
class Sheet{
private int[][] tab;
public Sheet(){
int [][] tab=new int [3][5];
List<Integer> list=new ArrayList<Integer>();
for(int l=10; l<=90; l+=10){
list.add(l);
}
Random rand=new Random();
for(int m=0; m<3; m++){
for (int n=0; n<5; n++){
tab[m][n]=rand.nextInt(90);
int o=(int)tab[m][m];
if(list.contains(o*10)){
break;
}
else{
list.remove(0*10);
n--;
}
}
}
}
public void printSheet(){
for (int i = 0; i <3; i++) {
for (int j = 0; j < 5; j++) {
System.out.println(tab[i][j] + " ");
}
System.out.println();
}
}
public static void main(String args[]){
Sheet c=new Sheet();
c.printSheet();
}
}
您从list
remove
数字多于您之前add
数字。
加法器循环
for(int l=10; l<=90; l+=10){
list.add(l);
}
以 l=10,20,30,40,50,60,70,80,90 运行,所以正好 9 次。
卸妆环对
for(int m=0; m<3; m++){
for (int n=0; n<5; n++){
tab[m][n]=rand.nextInt(90);
int o=(int)tab[m][m];
if(list.contains(o*10)){
break;
}
else{
list.remove(0*10);
n--;
}
}
}
starter 运行 3*5=15 次,因此可以轻松删除 15 个元素,并且由于n--
它可能会在remove
调用上运行更多次。 因此,您似乎从恰好包含 9 个元素的列表中删除了随机且可能大量的元素。
(请注意, remove(x)
不会从列表中删除x
,而是从第 x 个元素中删除,在这种情况下总是第一个 - 适用于前 9 次尝试,然后list
为空,没有第一个元素,引发异常你看)
异常的原因是行
list.remove(0*10);
检查你可以像下面这样评论并运行
//list.remove(0*10);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.