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,否则,更新末尾位。
}
只要每天积累,一定会有收获!