赶出来了呀。。。
- /*
- 需求:
- 1.输入整型偶数n,且2<= n <=10000,要求先把1到n中的所有奇数从小到大输出,再把所有的偶数从小到大输出。
- 2.要考虑当用户输入非整形字符时或超出范围的的异常处理。
- 3.代码必须有完整的注释。
- 4.代码尽可能的简单,用高的效率实现最快的速度。
- 思路:
- 1,使用IO流从控制台读出输入的数据
- 2,判断读到的数据类型,如果是非数字,则抛异常,是数字看是否在范围内
- 3,将读取到的数据进行转换(控制台为String)
- 4,读到的数据是正常数据则分开打印奇数和偶数,否则抛异常,采用对2求余的方法判断是否是奇偶数
- 5,如不在使用IO流,则关闭IO流
- */
- import java.io.*;
- class OdevityDemo
- {
- static BufferedReader bufr = null;//IO流高效加强
- public static void main(String[] args)
- {
- method();
- }
- //按要求输出指定范围内的奇偶数
- public static void method()
- {
- try
- {
- while (true)
- {
- //1,键盘输入数据
- System.out.print("\n请输入要区分奇偶的正整数:");
- bufr = new BufferedReader(new InputStreamReader(System.in));
-
- //2,从控制台读取数据
- String line = bufr.readLine();
- //不想输入时,输入over结束输入
- if("over".equals(line) || "OVER".equals(line))
- return;
- //3,转换数据,如果是非数字则抛异常
- int n = Integer.parseInt(line);
- //4,是数字但超出范围,则要求从新输入
- if(n<2 || n>10000)
- {
- System.out.print("请输入2-10000的正整数!!!");
- continue;
- }
- //5,分别输出奇偶数
- System.out.print("奇数:");
- for(int i=1;i<=n;i++)
- if(i%2==1)
- System.out.print(i+" ");
- System.out.print("\n偶数:");
- for(int i=1;i<=n;i++)
- if(i%2==0)
- System.out.print(i+" ");
- System.out.println();//输出全部偶数后换行
- }
-
- }
- catch (IOException e) //IO流读取数据失败
- {
- System.out.print("数据读取失败!");
- return;
- }
- catch(NumberFormatException ex) //数据类型转换失败
- {
- System.out.print("请输入正整数!!!");
- method(); //从新调用,从新输入
- }
- finally
- {
- try
- {
- //6.如果IO流创建成功,则不使用时就要关闭
- if(bufr!=null)
- bufr.close();
- }
- catch (IOException e)
- {
- System.out.println("关闭IO流失败!");
- }
- }
- }
- }
复制代码 |
|