黑马程序员技术交流社区

标题: 求大神指导! [打印本页]

作者: 杨海峰    时间: 2016-6-25 00:03
标题: 求大神指导!
从键盘接收多个int型的整数,直到用户输入end结束
         要求:把所有的整数按倒序写到D:\\number.txt中
作者: 何亚辉    时间: 2016-6-25 18:10
思路: 首先是用一个集合去接收这些数, 然后用Collections的sort方法将这些数字从小到大排序, 然后再从最后开始往前遍历, 用输出流写入 String.valueOf(int).getBytes();   
作者: aliali007    时间: 2016-6-26 17:54
我也是小白一枚,以下程序仅供参考,运行的结果是正确的。
作者: aliali007    时间: 2016-6-26 17:56
我也是小白一枚,供参考哟。运行是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. }
复制代码

作者: 下届海贼王    时间: 2016-6-26 18:53
都是大神,来学习哈
作者: 孟小垚    时间: 2016-6-26 21:28
学一学,看一看!




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