java - 如何在 Java 中表示 int 数组中的未初始化值?

标签 java arrays nan

我有一个存储 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/

相关文章:

java - 澄清资源包中写入的数据 - Java

java - 谁能告诉我为什么我的更改数量按钮没有更改数量?

Android中的Java从一个屏幕到另一个屏幕

c - C 中的数组操作

python - 支持 Nan 的 Pandas Lambda 函数

matlab - 如何从表中正确删除 NaN 值

python - 通过 Pandas 中的函数替换 NaN 时索引超出范围

java - 如何从 okhttp 的缓存中删除 url?

java - 使用方法返回输入到数组中的值的数量

arrays - PowerShell Poker Hand - 构建数组的问题