gpt4 book ai didi

java - 如何摆脱 int 数组中的重复值?

转载 作者:行者123 更新时间:2023-11-30 11:07:41 26 4
gpt4 key购买 nike

问题正如标题所说,我如何去除整型数组中的重复值?我想要它,以便用户输入五个数字,所有数字都在 10 到 100 之间。问题是我必须拥有它,这样如果他们输入的值已经输入到数组中,它就不会计数。这是我到目前为止的代码:

public static void main(String[]args){
Scanner input = new Scanner(System.in);

int[] intArray = new int[5]; //max of 5 values

for(int i = 0; i < 5; i++){
System.out.println("Please enter your desired number that is between 10 and 100: ");
intArray[i] = input.nextInt(); //puts the value into the array
}
System.out.println(Arrays.toString(intArray)); //for test purposes to make sure the array was correctly taking in the values
}
}


System.out.println(Arrays.toString(intArray)); //for test purposes to make sure the array was correctly taking in the values

我对如何做到这一点感到困惑,所以如果用户输入数组中已经存在的数字,它就不会添加它。这是我的意思的一个例子,假设用户输入数字 15、22、46、46、77,一旦程序完成循环五次,它将打印出以下内容:[15、22、46、77]。我坚持如何做到这一点。此外,我还删除了 if the number 在 10 到 100 之间的 if 语句,以使其更易于阅读,并直达要点。

最佳答案

使用 Set 怎么样?特别是 LinkedHashSet,允许您在 O(n) 时间和内存中执行此操作,同时保留输入的顺序。在你说“但我不能使用 HashSet”之前,你需要它的行为以获得最佳解决方案,因此后续问题可能是“我将如何实现 LinkedHashSet,可能将逻辑烘焙到我的程序中?”

public static void main(String[] args) {
Scanner input = new Scanner(System.in);

Set<Integer> intSet = new LinkedHashSet<>();
int[] intArray = new int[5]; //max of 5 values

for (int i = 0; i < 5; i++) {
System.out.println("Please enter your desired number that is between 10 and 100: ");
intSet.add(input.nextInt());
}

int[] intArray = new int[intSet.size()];

int i = 0;
for (Integer val : intSet) {
intArray[i++] = val;
}
}

关于java - 如何摆脱 int 数组中的重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28822419/

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