A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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);//打印
    }
}

1 个回复

正序浏览
沙发bbbbbbbbbbbbbbbbbb
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马