package com.heima.tree;
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;
public class Demo4 {
/**
* @param args程序启动后, 可以从键盘输入接收多个整数, 直到输入quit时结束输入. 把所有输入的整数倒序排列打印.
*/
public static void main(String[] args) {
inPut();//输入整数 如果输入字符打印输入错误并返回重新输入
}
public static void inPut() {
// TreeSet<Integer> ti = new TreeSet<>();
TreeSet<Integer> ti = new TreeSet<>(new Comparator<Integer>() {//将比较器传给 TreeSet构造方法
@Override
public int compare(Integer o1, Integer o2) {//重写 Comparator的compare方法
//int num = o2-o1; 自动拆箱 Integer
int num = o2.compareTo(o1);//倒序
return num==0?1:num; //不去重复
}
});
System.out.println("请输入数字");
a:for (;;) { //重复输入直到输入quit所以不确定循环次数创建一个空循环
Scanner sc = new Scanner(System.in);//创建扫描器对象 (解析输入的内容)
String s = sc.nextLine(); //定义一个字符串接收输入的一行数据
if ("quit".equals(s)) { //如果输入字符串是quit结束循环
break;
}
//输入字母打印错误重新输入,输入特殊字符运行出错
// for (int i = 0; i < s.length(); i++) {
// if (s.charAt(i) > '9' || s.charAt(i) < 0) {
// System.out.println("输入错误重新输入");
// continue a;
// }
// }
//如果输入为空,调回循环开始
if ("".equals(s)) {
continue a;
}
//改变if条件,原来的条件范围太大 改为 如果字符不在0-9之间重新输入
for (int i = 0; i < s.length(); i++) {
if (!(s.charAt(i) <= '9' && s.charAt(i) >= '0')) {
System.out.println("输入错误重新输入");
continue a;
}
}
//经过筛选是数字字符串的转换成Integer类型添加到ti
ti.add(new Integer(s));
// ti.add(Integer.parseInt(s));//转换成int型也可以 ti对象添加时自动装箱成Integer 不如直接转成Integer类型
System.out.println("继续输入数字或输入quit退出");//打印提示继续输入数字还是输入quit退出
}
System.out.println(ti);//打印
}
}
|
|