使用java写一个程序:输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。

import java.util.*;

public class Main{
	
	public static void newNum(int num) {
		List<Integer> numList = new ArrayList<>();
		if(num==0) {        //这里用来判断输入的数据是否为0,如果为0,直接输出0;
			System.out.println(0);
		}
		while(num>0) {      //如果不是0,则通过取余(10)操作不断提取所输入整数的最后一位,然后通过除法运算(10)右移更新末尾一位
			if(numList.contains(num%10)) {
				num /= 10;
			}else {
				numList.add(num%10);//如果这末尾位是第一次出现,则将其存入ArrayList,否则,更新末尾位。
			}
		}
		//最后增强for循环直接将ArrayList中的数打印出来
		for(int lastNum:numList) {
			System.out.print(lastNum);
		}
	}
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int num = in.nextInt();
		newNum(num);
	}
}

这个题说难不难,说不难对新手来说也难,难点在于新手见过的例子太少,一时间想不到像这个例子中取余和除法这样解决问题的方式,还有像List这个接口,我一开始想到的是数组,但是发现并不能解决问题,于是才想到了ArrayList。所以说编程重在积累,孰能生巧嘛。
总结:逆序输出一个整数,采用取余和除法相结合的方式。

再说这个代码块,这一段代码也像是一种既定的形式,用来去重,像前面用到的HashMap,也有类似的结构,所以这也是一个总结。

if(numList.contains(num%10)) {
	num /= 10;
}else {
	numList.add(num%10);//如果这末尾位是第一次出现,则将其存入ArrayList,否则,更新末尾位。
			}
只要每天积累,一定会有收获!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值