黑马程序员技术交流社区
标题:
求大神指导!
[打印本页]
作者:
杨海峰
时间:
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的。
import java.io.*;
import java.util.*;
public class SystemInFileOut
{
public static void main(String[] args) throws IOException
{
//定义一个Scanner,用于接收键盘输入;
Scanner sc=new Scanner(System.in);
//定义一个字符处理流,该处理流包装了底层的字符输出流
BufferedWriter bw=new BufferedWriter(new FileWriter("d:\\number.txt"));
//定义一个ArrayList,用于存储从键盘读取到的数据,以便对数据进行排序;
ArrayList<Integer> al=new ArrayList<Integer>();
/*
使用While(true)语句来重复对用户输入的值进行处理
定义try/catch语句,当用户输入的为文本数据无法转换为整数时,在catch中进行处理:打印提示语句到控制台,继续读取用户的下一次输入。
注意:如果不对异常进行处理,程序会抛出异常,导致程序中断。
只有当用于输入"end"时才跳出循环,结束
*/
while(true){
try{
//读取用户的下一次输入
String a=sc.nextLine();
//为避免重复多次将集合中的数据写入到txt文件中,在用户结束输入之前,一次性进行写入到txt文件中。
if(a.equals("end")){
//使用Colletions中的静态方法对a1中的数据进行排序
Collections.sort(al);
//将a1中的元素进行反转,相当于进行反转排序
Collections.reverse(al);
//写数据到txt文件中
bw.write(al.toString());
//刷新
bw.flush();
//用户输入over,退出循环
break;
}
//如果从键盘输入的文本可以转化为整数,则将数据增加到集合中;若无法转化为整数,则抛出异常。
if(Integer.valueOf(a) instanceof Integer){
//将接收到的String值转化为Integer对象
Integer b=Integer.valueOf(a);
//将Integer值增加到集合中
al.add(b);
}
}
//如果输入的文本数据不可以转化为整数,打印输出语句到控制台,继续读取用户的下一次输入。
catch(Exception e){
System.out.println("请输入整数,若希望结束输入,请输入\"end\"");
}
}
//关闭流
sc.close();
bw.close();
}
}
复制代码
作者:
下届海贼王
时间:
2016-6-26 18:53
都是大神,来学习哈
作者:
孟小垚
时间:
2016-6-26 21:28
学一学,看一看!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2