首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用java编写一个接受数组中n个元素的程序,然后只显示重复的元素。

用java编写一个接受数组中n个元素的程序,然后只显示重复的元素。
EN

Stack Overflow用户
提问于 2022-08-05 14:07:04
回答 3查看 139关注 0票数 -1

用java编写一个程序,在数组中接受n个元素,然后只显示重复的元素,例如,如果我们输入12352342678898,它将显示238个我尝试过,但这是非常长的。

导入java.util.*;类JavaApplication1 {

代码语言:javascript
代码运行次数:0
运行
复制
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]+" ");
        }
    }
}

}

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-08-05 14:22:21

一种可能是对数组a进行排序,例如使用java.util.Arrays.sort(a);。然后,只需遍历a并检查重复的数字。这部分看起来可能是这样的:

代码语言:javascript
代码运行次数:0
运行
复制
    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检查..。还建议将对重复数字的检测移到单独的方法(或更好的,类)中,而不打印出来。这是混合计算和用户界面,不好的做法。

票数 -1
EN

Stack Overflow用户

发布于 2022-08-05 14:21:06

我将告诉您我要实现的解决方案的关键点。

  • 并不强迫用户事先确定数组的大小:只需按"q“键退出即可。只要您是唯一的程序员,使用数组的索引作为数字的想法并不坏。如果没有,我会使用一个带有“元素”的字典:“重复次数”。然后,您可以将字母添加到您的program
  • Finally,中,您需要使它更加模块化。首先,创建一个接受所有数字并返回数组的函数。然后创建一个筛选数组并返回重复元素的函数。最后,创建一个写入该数组的函数。在您的主目录中,您应该只调用这3个函数.
票数 1
EN

Stack Overflow用户

发布于 2022-08-05 14:17:55

您可以创建一个集合,当您第一次浏览数字时,可以将它们添加到集合中。它将不允许您添加重复值,因为集合不允许重复值。这将导致您只需要循环数一次,然后在最后,显示包含在集合中的数字。我希望这能帮上忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73251055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档