用java编写一个程序,在数组中接受n个元素,然后只显示重复的元素,例如,如果我们输入12352342678898,它将显示238个我尝试过,但这是非常长的。
导入java.util.*;类JavaApplication1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("Enter Size: ");
int s=sc.nextInt();
int a[]=new int[s];
int t[]=new int[s];
int p=0;
System.out.println("Enter numbers :-");
for(int i=0;i<s;i++)
{
a[i]=sc.nextInt();
}
for(int i=0;i<s;i++)
{
boolean flag=false;
for(int j=i+1;j<s;j++)
{
if(a[i]==a[j])
{
flag=true;
break;
}
}
if(flag==true)
{
t[p]=a[i];p++;
}
}
System.out.print("duplicate elements are:- ");
for(int i=0;i<p;i++)
{
boolean flag=false;
for(int j=i+1;j<s;j++)
{
if(t[i]==t[j])
{
flag=true;
break;
}
}
if(flag==false)
{
System.out.print(t[i]+" ");
}
}
}
}
发布于 2022-08-05 06:22:21
一种可能是对数组a
进行排序,例如使用java.util.Arrays.sort(a);
。然后,只需遍历a
并检查重复的数字。这部分看起来可能是这样的:
Arrays.sort(a);
Integer prev = null;
Integer printed = null;
for (int val : a) {
if (prev != null && val == prev && (printed == null || val != printed)) {
System.out.print(val + " ");
printed = val;
}
prev = val;
}
这是一个相当丑陋的程序和解决方案(我的代码)。虽然从算法的角度来看,这是可行的,但我并不推荐这是一个好的编程实践。例如,使用null
检查..。还建议将对重复数字的检测移到单独的方法(或更好的,类)中,而不打印出来。这是混合计算和用户界面,不好的做法。
发布于 2022-08-05 06:21:06
我将告诉您我要实现的解决方案的关键点。
发布于 2022-08-05 06:17:55
您可以创建一个集合,当您第一次浏览数字时,可以将它们添加到集合中。它将不允许您添加重复值,因为集合不允许重复值。这将导致您只需要循环数一次,然后在最后,显示包含在集合中的数字。我希望这能帮上忙
https://stackoverflow.com/questions/73251055
复制相似问题