A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 叨叨1 初级黑马   /  2017-3-5 23:28  /  909 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

目前只学到了基础班数组~
有如下数组int[ ] arr = {32,11,77,22,11,77}; 写代码,生成一个新的数组,这个新的数组,只包含重复的元素极其个数,也就是{“11=2”, “77=2”},也就是说,112个,772
class Text {
        public static void main(String[] args) {
                int[] arr = { 32, 11, 77, 22, 11, 77 ,32,11,77};//定义一个数组
                int[] arr1 = { 32, 11, 77, 22, 11, 77 };//作用:遍历这个数组中的值,用arr里面的值和他进行比较
                int[] jiShu = new int[arr.length];//对数组arr1每个位置的重复数进行计数;
                int[] arr2 = new int[jiShu.length];//用于取出重复次数在2以上的数
                int index = 0;//定义角标,找出重复数的个数;
                int[] jiShu1 = new int[jiShu.length];//用于接收jiShu值在2以上的计数;
                for (int x = 0; x < arr1.length; x++) {
                        for (int y = 0; y < arr.length; y++) {
                                if (arr1[x] == arr[y]) {// 找出数组当中的重复的个数,其中arr1[x]中x角标中的个数为jiShu[x]的数值;
                                        jiShu[x]++;
                                        arr[y] = 0;
                                }
                        }
                }
                for (int i = 0; i < jiShu.length; i++) {//用于找出arr1中的真正重复的数,并找出jiShu中值是2以上的数;
                        if (jiShu > 1) {
                                arr2[index++] = arr1;
                                jiShu1[index - 1] = jiShu;
                        }
                }
                String[] arr3 = new String[index];//确定了最终数组的个数以及的重复的数之后,定义最终数组的每个数值
                for (int i = 0; i < index; i++) {
                        arr3 = arr2 + "=" + jiShu1;
                }
                for (int i = 0; i < index; i++) {//遍历最终数组里的值,检查是否正确
                        System.out.print(arr3+"  ");
                }
        }

}
这是我只能做到的部分了~

2 个回复

倒序浏览
感觉问题不复杂,看了你的代码手机看的看不清+头疼。先定义俩个和所求数组一样长度的数组用length,先用外循环遍历数组,定义一个int s=0来控制索引,内循环把取出来的数和后面的比较如果重复给变量num自加一当循环到最后一个开始判断如果num为0就代表这数不重复,如果不为0就代表次数重复把外循环来的值付给数组a[s] s自加把num付给a[s] s自加。这样就能得到一个{重复数,个,重复数,个数……}的结果了,还有当拿后面的数和更后面的比较时怎么判断这个数是否是前面已经重复的了,这是就用第二个数组b了用来标记哪些数不必再用了,当有重复的数是就在对应位置把b[j]赋值1这步要放在内循环中,在外循环中在加一个判断当从arr取数时如果对应位置的数组b中的元素为1就不用取该数了因为是前面重复的跳过继续下一次循环即可,最后a就是你要的结果,如果非要那个字符串数组的话,用连接符和=连起来就行了。其实和你的也差不多!呵呵




来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
好像很厉害的样子,反正我就不懂

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马