黑马程序员技术交流社区

标题: 没学异常处理判断输入是否是数字 [打印本页]

作者: 星际传奇    时间: 2016-6-1 21:34
标题: 没学异常处理判断输入是否是数字
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);//打印
    }
}


作者: 111111111111    时间: 2016-6-1 21:34
沙发bbbbbbbbbbbbbbbbbb




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2