java语言程序设计基础篇——一维数组(2)【消除重复】

(消除重复)使用下面的方法头编写方法,消除数组中重复出现的值:

public static int[] eliminateDuplicates(int[] numbers)

编写一个测试程序,读取10个整数,调用该方法,然后显示结果。

分析:这个题目其实是上一篇中“打印不同的数”的变形,将具体的消除重复过程写成方法。

在这里会出现两个容易出错的地方:

(1)在方法的最后我又新建了一个长度为count的数组result[],将长度为numbers.length的数组f[]中的元素全部复制给result[],然后返回result。因为numbers在主函数中定义的长度为10,所以f的长度也为10,将不同的数存储进f中后,若直接返回f,则输出的数组中会用0补足保证10的长度,所以会输出比如:1 2 3 6 4 5 0 0 0 0

(2)方法的构建是为了实现代码复用,在这里应该设置f[]的长度为numbers.length;

有一个不好的地方,题目要求10个数,为了节省不必要的麻烦,必须将数组numbers[]的长度设为10,如果担心溢出而设置了大于10的初始长度,则需要将方法中的result的长度改成count-1,因为numbers后面含有不确定个数的元素0,0也被计算在不同数之内,但若前10个数之内含有0,那就尴尬了。。。

import java.util.Scanner;

public class Exercise6_15 {
	public static int[] eliminateDuplicates(int[] numbers){
		int count=0;
		int[] f = new int[numbers.length];
		
		for(int i=0;i<numbers.length;i++){
			int j;
			for(j=0;j<count;j++){
				if(numbers[i]==f[j]){
					break;
				}	
			}
			if(j==count){
				f[count]=numbers[i];
				count++;
			}
		}
		
		int[] result = new int[count];
		for(int i=0;i<count;i++){
			result[i]=f[i];
		}
		return result;
	}
	
	public static void main(String[] args){
		Scanner input = new Scanner(System.in);
		int[] numbers = new int[10];
		
		System.out.print("Enter ten numbers: ");
		for(int i=0;i<10;i++){
			numbers[i]=input.nextInt();
		}

		System.out.print("The distinct numbers are: ");
		int[] result=eliminateDuplicates(numbers);
		for(int i=0;i<result.length;i++){
			System.out.print(result[i]+" ");
		}	
		
	}
}


  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值