TAG POS=1 TYPE=INPUT:FILE FORM=CLASS:mainform ATTR=NAME:image-file-upload CONTENT=C:\Users\Bob<SP>M\Downloads\1.png
WAIT SECONDS=5
TAG POS=1 TYPE=INPUT:FILE FORM=CLASS:extraForm ATTR=NAME:image-file-upload CONTENT=C:\Users\Bob<SP>M\Downloads\2.png
WAIT SECONDS=5
TAG POS=1 TYPE=INPUT:FILE FORM=CLASS:extraForm ATTR=NAME:image-file-upload CONTENT=C:\Users\Bob<SP>M\Downloads\3.png
WAIT SECONDS=5
TAG POS=1 TYPE=INPUT:FILE FORM=CLASS:extraForm ATTR=NAME:image-file-upload CONTENT=C:\Users\Bob<SP>M\Downloads\4.png
WAIT SECONDS=5
TAG POS=1 TYPE=INPUT:FILE FORM=CLASS:extraForm ATTR=NAME:image-file-upload CONTENT=C:\Users\Bob<SP>M\Downloads\5.png
WAIT SECONDS=5
打印变量private static <T> void shuffle(T[] array){
if(array==null || array.length < 2){
return;
}
for(int i=1;i<array.length;i++){
int a = rng.nextInt(i+1);
System.out.println(a);
T temp = array[a];
System.out.println(temp);
array[a] = array[i];
array[i] = temp;
}
}
static boolean checkSorted(ISort sorter, int size) {
Integer[] data = new Integer[size];
shuffle(data);
}
和a
时的输出:
temp
我不确定0
null
2
null
0
null
2
null
0
null
4
null
7
null
8
null
6
为什么是 null 而不是 Integer 。有人可以向我解释吗?我应该如何修改此代码才能使其正常工作?
答案 0 :(得分:1)
Integer[] data = new Integer[size];
是一个整数数组,但在分配前,要打印的数组中的所有成员均为空。首先正确初始化数组:
Integer[] array = new Integer[5];
array[0]= new Integer(0);
array[1]= new Integer(1);
答案 1 :(得分:0)
在Java中,每个变量都有一个类型。当您声明变量而不指定值时,默认情况下它将具有预定义的值。如果它是包含对 Object 的引用的变量(换句话说,是composite type的变量),则其值为 null 。另一方面,如果它是primitive type的变量,则根据其类型将具有不同的值(数字的默认值为0)。有关更多详细信息,请参见下表。
(图片来自Java文档,here)
考虑到这一点,我们现在可以继续执行您的代码行为。当创建类型为Integer
的数组时,默认情况下其所有元素均为 null 。请注意,Integer
是对象包装器类(请参见type wrappers),而int
是原始类型。如果您创建了int
类型的数组,则其所有元素默认情况下的值为 0 。这就是为什么在打印temp
null 而不是数字时的原因。为了解决这个问题,您可以为数组的元素分配值,如下所示:
Integer[] data = new Integer[size];
Random random = new Random();
for(Integer i: data) {
i = random.nextInt(100); //assign a random value between 0 to 99
}