学以致用——Java源码——对用户输入进行去重处理(Duplicate Elimination)

发现之前的代码与需求有一定出入,所以改写了一下:

1. 如果用户输入不重复的值,显示该值,否则提示用户重复输入,不显示该值

2. 使用了增强for语句(enhanced for statement)遍历数组

3. 仅打印不重复值

上一个版本的代码参考:

https://blog.csdn.net/hpdlzu80100/article/details/51850689

代码如下:

package exercises.ch7Arrays;

//JHTP Exercise 7.12: Duplicate Elimination
//by pandenghuang@163.com
/**(Duplicate Elimination) Use a one-dimensional array to solve the following problem:
Write an application that inputs five numbers, each between 10 and 100, inclusive. As each number
is read, display it only if it’s not a duplicate of a number already read. Provide for the “worst case,”
in which all five numbers are different. Use the smallest possible array to solve this problem. Display
the complete set of unique values input after the user enters each new value.:*/
import java.util.Scanner;

public class DuplicateRemoval 
{
	
	public static void main(String[] args)
{

	final int SIZE=5;	
	int[] entry=new int[5];
	int number=0;
	boolean flag=false; //重复标记
	int count=0;
	int entries =0; //输入总次数

	Scanner input=new Scanner(System.in);
	
	for (int i=0;i<SIZE;i++){
		flag = false;  //重新输入时,重置重复标记
		System.out.print("请输入10-100中的一个整数(输入-1退出):");
		number=input.nextInt();
		if(number==-1){
			System.out.print("已退出程序。\n");
			break;
		}
		for (int x: entry){  //遍历现有数组,判断是否重复(使用增强for语句遍历数组元素)
		if (x ==number){
			System.out.print("该数值之前已输入,不能重复输入!\n"); //2018年12月25日改进
			flag = true;
		}
		}
		if (!flag){		//如果未重复,显示该值
		entry[count]=number;
		System.out.printf("您所输入的值为:%d%n",number);
		count++;
		}
		entries++;
		
	}

		System.out.printf("共输入了%d个数,输入了重复值%d次,输入的不重复值有%d个,依次为:\n",entries, entries - count, count);
		for (int i=0; i<count;i++) 
			System.out.printf(entry[i]+"\t");
	
	input.close();
}
}
	





运行结果:

请输入10-100中的一个整数(输入-1退出)10

您所输入的值为:10

请输入10-100中的一个整数(输入-1退出)10

该数值之前已输入,不能重复输入!

请输入10-100中的一个整数(输入-1退出)20

您所输入的值为:20

请输入10-100中的一个整数(输入-1退出)30

您所输入的值为:30

请输入10-100中的一个整数(输入-1退出)-1

已退出程序。

共输入了4个数,输入了重复值1次,输入的不重复值有3个,依次为:

10                   20                   30                  

【程序1】 题目: 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高    于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提    成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于    40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于    100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 【程序3】 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 【程序4】 题目:输入某年某月某日,判断这一天是这一年的第几天? 【程序5】 题目:输入三个整数x,y,z,请把这三个数由小到大输出。 【程序6】 题目:用*号输出字母C的图案。 【程序8】 题目:输出9*9口诀。 【程序9】 题目:要求输出国际象棋棋盘。 【程序10】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月    后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 【程序11】 题目:判断101-200之间有多少个素数,并输出所有素数。 【程序12】 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数    本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 【程序13】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 【程序14】 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,    60分以下的用C表示。 【程序15】 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 【程序16】 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 【程序17】 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时    共有5个数相加),几个数相加有键盘控制。 【程序18】 题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程    找出1000以内的所有完数。 【程序19】 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在    第10次落地时,共经过多少米?第10次反弹多高? 【程序20】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续    判断第二个字母。 【程序21】 题目:求100之内的素数    【程序22】 题目:对10个数进行排序 【程序23】 题目:求一个3*3矩阵对角线元素之和 【程序24】 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 【程序25】 题目:将一个数组逆序输出。 【程序26】 题目:取一个整数a从右端开始的4~7位。 【程序27】 题目:打印出杨辉三角形(要求打印出10行)    【程序28】 题目:输入3个数a,b,c,按大小顺序输出。    【程序29】 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 【程序30】 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出    圈子,问最后留下的是原来第几号的那位。 【程序31】 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数    1/1+1/3+...+1/n(利用指针函数) 【程序32】 题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只    猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了    一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,    问海滩上原来最少有多少个桃子? 【程序33】 题目:求0—7所能组成的奇数个数。 【程序34】 题目:一个偶数总能表示为两个素数之和
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值