gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 05:08:19 24 4
gpt4 key购买 nike

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

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

这是我试过的代码

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com