java - 从java中的未排序数组中获取未使用数字的列表

标签 java arrays

我需要从未排序的数组中获取最小的未使用数。我无法对数组进行排序,因为这只是一个测试程序,在实际程序中,我将从对象数组中获取值。

因此,在尝试获取最小的未使用号码时,我设法获得了未使用号码的列表。这对于我在程序中编写的第一个随机数来说是完美的,但是第二次,输出错误。

这是我试过的代码

class smallestUnusedNumberTest {
    public static void main(String args[]) {
        int[] testArray = {1, 5, 7, 11, 4, 8};
        int largest = 1;
        int i;
        for(i = 0; i < testArray.length; i++) {
            if(testArray[i] > largest) {
                largest = testArray[i];
            }
        }
        for(i = 1; i < largest; i++) {
            for(int j = 0; j < testArray.length; j++) {
                if(i == testArray[j]) {
                    i++;
                }
            }
            System.out.println(i);
        }
    }
}

我得到的输出是

2
3
5
6
9
10

我得到 5,它已经存在于数组中。 我使用 for 循环从数组中获取最大的数字。但是,我无法找出正确的逻辑。

我应该怎么做才能从数组中获取正确的未使用数字?我需要按升序排列的输出。

最佳答案

您的算法逻辑存在问题:当您找到匹配时在内循环中递增 i,但您继续循环。因此,当您在 5 之后找到 4 时,您将 i4 递增到 5,但您永远不会回到数组的开头,看看是否有一些较早的元素是 5

要解决此问题,请在外层循环中定义一个 boolean 变量,最初将其设置为 false,然后在中将其设置为 true当你找到 i == testArray[j] 时的内部循环;找到匹配项时跳出循环。

在内部循环之后检查您的 boolean 变量。如果它是 true,那么数字就在那里,所以你不应该打印任何东西。否则,打印数字。

关于java - 从java中的未排序数组中获取未使用数字的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29632172/

相关文章:

arrays - Lua单词搜索

javascript - 遍历嵌套的 json 数组

JAVASCRIPT 值到 JSP 变量

java - 通过构造函数初始化构造函数会产生意外结果吗?

java - 对文件系统中的文件夹执行命令

c - 参数中的数组没有变量初始化

java - 两个 win2k 虚拟机之间的通信

java - 如何在 JDBI 中使用 IN 运算符?

python - 如何在python中获取锯齿状数组的长度

c++ - 我的动态数组有问题