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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨海峰 初级黑马   /  2016-6-25 00:03  /  644 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

从键盘接收多个int型的整数,直到用户输入end结束
         要求:把所有的整数按倒序写到D:\\number.txt中

5 个回复

倒序浏览
思路: 首先是用一个集合去接收这些数, 然后用Collections的sort方法将这些数字从小到大排序, 然后再从最后开始往前遍历, 用输出流写入 String.valueOf(int).getBytes();   
回复 使用道具 举报
我也是小白一枚,以下程序仅供参考,运行的结果是正确的。
回复 使用道具 举报
我也是小白一枚,供参考哟。运行是OK的。
  1. import java.io.*;
  2. import java.util.*;
  3. public class SystemInFileOut
  4. {
  5.         public static void main(String[] args) throws IOException
  6.         {
  7.                 //定义一个Scanner,用于接收键盘输入;
  8.                 Scanner sc=new Scanner(System.in);
  9.                 //定义一个字符处理流,该处理流包装了底层的字符输出流
  10.                 BufferedWriter bw=new BufferedWriter(new FileWriter("d:\\number.txt"));
  11.                 //定义一个ArrayList,用于存储从键盘读取到的数据,以便对数据进行排序;
  12.                 ArrayList<Integer> al=new ArrayList<Integer>();
  13.                 /*
  14.                 使用While(true)语句来重复对用户输入的值进行处理
  15.                 定义try/catch语句,当用户输入的为文本数据无法转换为整数时,在catch中进行处理:打印提示语句到控制台,继续读取用户的下一次输入。
  16.                 注意:如果不对异常进行处理,程序会抛出异常,导致程序中断。
  17.                 只有当用于输入"end"时才跳出循环,结束
  18.                 */
  19.                 while(true){
  20.                         try{
  21.                         //读取用户的下一次输入
  22.                         String a=sc.nextLine();
  23.                         //为避免重复多次将集合中的数据写入到txt文件中,在用户结束输入之前,一次性进行写入到txt文件中。
  24.                         if(a.equals("end")){
  25.                                 //使用Colletions中的静态方法对a1中的数据进行排序
  26.                                 Collections.sort(al);
  27.                                 //将a1中的元素进行反转,相当于进行反转排序
  28.                                 Collections.reverse(al);
  29.                                 //写数据到txt文件中
  30.                                 bw.write(al.toString());
  31.                                 //刷新
  32.                                 bw.flush();
  33.                                 //用户输入over,退出循环
  34.                                 break;
  35.                         }
  36.                         //如果从键盘输入的文本可以转化为整数,则将数据增加到集合中;若无法转化为整数,则抛出异常。
  37.                         if(Integer.valueOf(a) instanceof Integer){
  38.                                 //将接收到的String值转化为Integer对象
  39.                                 Integer b=Integer.valueOf(a);
  40.                                 //将Integer值增加到集合中
  41.                                 al.add(b);
  42.                                
  43.                         }
  44.                         }
  45.                         //如果输入的文本数据不可以转化为整数,打印输出语句到控制台,继续读取用户的下一次输入。
  46.                         catch(Exception e){
  47.                                 System.out.println("请输入整数,若希望结束输入,请输入\"end\"");
  48.                         }
  49.                 }
  50.                 //关闭流
  51.                 sc.close();
  52.                 bw.close();
  53.         }
  54. }
复制代码
回复 使用道具 举报
都是大神,来学习哈
回复 使用道具 举报
学一学,看一看!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马