数组重复值

数组重复值

老师,若要求一对数组里的出现的重复的数,并按照从大到小的顺序把它们重新打印出来

比如 「2,3,4,5,4,2,,6,4」

要求输出 「2,2,4,4,4,5,6,」

怎么做呀?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好!

  1. Test2 t=new Test2()是创建一个Test2这个类的对象,在后面的面向对象部分会讲到,建议同学继续往后学习

    http://img1.sycdn.imooc.com//climg/5dd0a9fc092f110d12060411.jpg

  2. 冒泡排序算法的原理就是:从数组的第一个数开始,依次和后面的数相比,若前者小则交换顺序,直到所有小的数冒到最后,最后按照从大到小排序。在课程的4-1节有讲解到这个排序,建议同学可以看一下视频,视频的讲解会比文字更加生动,更加有助于你的理解,具体链接:

    https://class.imooc.com/lesson/980#mid=23318 

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

好帮手慕酷酷 2019-11-16 10:16:08

同学你好,这里同学的编写思路有些偏差,

按照老师之前提供给同学的思路应该是,先将这个数组进行排序,然后从头到尾遍历排序后的数组,然后比较前一个数字与后一个数字是否相等。如果相等就返回他。如果不相等就向后移动,直到数组遍历结束。

这里关于排序的方法,可以参考本章中4-1小节的冒泡排序

在进行遍历数组时,应该从数组下标0开始,直到数组长度-1的位置结束循环,因为如果到数组的最后结束遍历,则会导致最后一个数组元素与后一个元素,无法比较,会造成数组越界的异常。然后当前元素与后一个元素比较是否相等并且当前元素与后两个元素不相等时,输出这个重复的元素。

例如代码如下:

public class Test2 {
	//冒泡排序进行排序
	public int [] sort1(int [] a) {
		int temp;
		for(int i=0;i<a.length-1;i++){
			//内重循环控制每趟排序
			for(int j=0;j<a.length-i-1;j++){
				if(a[j]>a[j+1]){
					temp=a[j];
					a[j]=a[j+1];
					a[j+1]=temp;
				}
			}
		}
		return a;
	}

	public static void main(String[] args) { 
		Test2 t=new Test2();
		int[ ] arr = { 2,3,1,3,2,4,6,7,9,2,19 };
		int[ ] arrSort = t.sort1(arr);//调用排序方法,返回排序后的数组。
		for (int i = 0; i < arrSort.length-1; i++) { //对排序后的数组进行遍历
			if (arrSort[i] == arrSort[i + 1]&&arrSort[i]!=arrSort[i + 2]) {
				System.out.println(arrSort[i]);
			}
		}
	}
}

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕仙7354812 #1
    老师,Test2 t=new Test2(); 是什么意思? 可不可以再请你简单介绍下排序方法呀?
    2019-11-16 20:37:10
好帮手慕酷酷 2019-11-15 18:57:34

同学你好,编程最重要的就是自己的思想,每个人都会有自己的实现思路。

老师这里提供一个思路,同学可以进行参考:

首先可以将这个数组进行排序,然后从头到尾扫描排序后的数组,然后比较前一个数字与后一个数字是否相等。如果相等就返回他。如果不相等就向后移动,直到数组遍历结束。

关于排序的方法,可以参考本章中4-1小节的冒泡排序,进行参考哦~

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕仙7354812 #1
    public static void main(String[] args) { // TODO Auto-generated method stub String result = "{"; int[] arr= {2,3,1,3,2,4,6,7,9,2,19}; for(int i=0;i<arr.length;i++) { if (arr[i]==arr[i+1]) { result = result +arr[i]+","+arr[i+1]; } if (arr[i]!=arr[i+1]) { arr[i]=arr[i+2]; result =result+arr[i]+"}"; } } System.out.println(result); } }我写到这里就没有思路了:/
    2019-11-15 19:21:06
  • 提问者 慕仙7354812 #2
    当数字不相等的时候,我尝试用arr[i]=arr[i+2] 但是会出现报错,说我超过长度 请问怎么解决
    2019-11-15 19:29:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师