我有一个存储 5 个整数的 int
数组。我打算将5个数字作为输入,并以排序的方式(升序)将它们放入数组中。所以基本上,我将每一步接受的值放在它应该按升序排列的位置。假设没有输入是 0
,我有这个有效的代码:
System.out.println("Enter 5 integers...");
Scanner sc=new Scanner(System.in);
int[] arr = new int[5];
int c;
//assuming that no number entered is 0
for(int i=1; i<=5; i++){
c = sc.nextInt();
for(int j=0; j<5; j++){
if(arr[j] == 0){ //placing an input where there's 0
arr[j] = c;
break;
}
else if(c < arr[j]){
for(int k=4; k>j; k--)
arr[k] = arr[k-1];
arr[j] = c;
break;
}
}
}
System.out.println("The numbers in ascending order are\n"
+java.util.Arrays.toString(arr));
基本上,我认为 0
是无效值,可以用其他数字(大概非零)代替它。如果用户不输入 0
,我可以认为这是理所当然的。但是,如果用户输入 0
(或与此相关的任何数字)会怎样?我希望能够正确放置数字,包括 0
。所以我想我可以使用其他东西来表示 未初始化 或 空 空间,而不是数字。我在 SO 上看到一篇帖子,其中有人对 double
数组有类似的问题,因此他们可以使用 Double.NaN
来表示 invalid 或 < strong>空白空间。不幸的是,JAVA 没有Integer.NaN
所以我不能使用这个技巧。
所以我的问题是,如何在 int 数组中表示空的/未初始化的空间? 可以使用类似 NaN
的东西吗?
最佳答案
在 Java 中,您有一种替代过去语言的“经典”方式,它依赖于“神奇值”来表示未初始化的 int
(类似于最大或最小可能值)。
您可以使用 Integer
,而不是 int
,并使用 null
作为“未初始化”值:
整数[] arr = new Integer[5];
这里,arr
的每个元素都自动初始化为null
,这很好。
但是请注意可怕的 ==
比较引用而不是值。
关于java - 如何在 Java 中表示 int 数组中的未初始化值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41980561/