gpt4 book ai didi

java - 在数组中查找重复项并仅打印一次

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

我试图遍历我的数组并找到所有重复不止一次的数字:

例如:如果有 1 1 2 3 4

它应该打印出“1 重复不止一次”

这是我的代码,到目前为止我已经尝试过,但是它会打印所有重复项并继续,如果有 4 4 4 4 3 6 5 6 9,它将打印所有 4但我不想这样:

class average {

public static void main(String[] args) throws IOException {

int numOfLines = 0;
int sum = 0, mean = 0, median = 0, lq = 0, uq = 0;
int[] buffer;

File myFile = new File("num.txt");
Scanner Scan = new Scanner(myFile);

while(Scan.hasNextLine()) {
Scan.nextLine();
numOfLines++;
}
Scan.close();
Scan = new Scanner(myFile);

System.out.println("Number Of Lines: " + numOfLines);

buffer = new int[numOfLines];

for(int i=0; i<numOfLines; i++) {
buffer[i] = Scan.nextInt();
}
Scan.close();
Scan = new Scanner(myFile);

for(int i=0; i<buffer.length; i++) {
sum = sum+i;
mean = sum/numOfLines;
}
System.out.println("Sum: " + sum);
System.out.println("Mean: " + mean);

for(int i=0; i<buffer.length; i++) {
for(int k=i+1; k<buffer.length; k++) {
if(buffer[k] == buffer[i]) {
System.out.println(buffer[k]);
}
}
}

最佳答案

只需将您会发现重复的数字添加到某些结构(如 HashSetHashMap)中,以便稍后在检测到另一个重复项时可以找到它。

Set<Integer> printed = new HashSet<Integer>();

for(int i=0; i<buffer.length; i++) {
for(int k=i+1; k<buffer.length; k++) {
if(buffer[k] == buffer[i]) {
Integer intObj = new Integer(buffer[k]);
if (!printed.contains(intObj)) {
System.out.println(buffer[k]);
printed.add(intObj);
}
break;
}
}
}

更好的 O(n) 算法:

Set<Integer> printed = new HashSet<Integer>();

for(int i=0; i<buffer.length; i++) {
if (!printed.add(new Integer(buffer[i])) {
System.out.println(buffer[i]);
}
}

关于java - 在数组中查找重复项并仅打印一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29867935/

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