这个小案例所涉及到的知识点还挺多的,涉及到的循环,集合类,异常处理,IO流等这些知识,很值得学习!!
/**
* 从键盘接收多个int型的整数,直到用户输入end结束
要求:需要判断用户输入的数据是否是一个整数,并把所有的整数按倒序写到D:\\number.txt中
分析:
1,创建一个键盘录入对象,并使用String line = sc.nextLine();方法接收键盘输入的数据
2,定义一个ArrayList集合,泛型为 Integer
3,使用while无限循环
4,判断输入的字符串是否等于end
是:退出循环
否:将输入的数据进行转换成整数,并判读输入的数据是否为一个整数
是:将数据添加到ArrayList集合中
否:如果是一个过大的整数,则提示您输入的数据过大,请重新输入一个整数
如果是一个小数,则提示您输入的数据是一个小数,请重新输入一个整数
如果前面的两个都不是,那么就提示您输入的一个不合法的数据,请重新输入
提示:使用try{}catch() {}方法来判断
5,定义一个写出流,并指定写出到D:\\number.txt文件中
6,将集合倒序遍历,并将遍历到的元素使用写出流写入到D:\\number.txt中
7,关闭流
*/
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Scanner;
public class Test06 {
public static void main(String[] args) throws IOException {
//1,创建一个键盘录入对象,并使用String line = sc.nextLine();方法接收键盘输入的数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个int类型的整数:");
//2,定义一个ArrayList集合,泛型为 Integer
ArrayList<Integer> list = new ArrayList<>();
//3,使用while无限循环
while(true) {
/*
* 4,判断输入的字符串是否等于end
是:退出循环
否:将输入的数据进行转换成整数,并判读输入的数据是否为一个整数
是:将数据添加到ArrayList集合中
否:如果是一个过大的整数,则提示您输入的数据过大,请重新输入一个整数
如果是一个小数,则提示您输入的数据是一个小数,请重新输入一个整数
如果前面的两个都不是,那么就提示您输入的一个不合法的数据,请重新输入
提示:使用try{}catch() {}方法来判断
*/
String line = sc.nextLine();
if ("end".equals(line)) {
break;
}else{
try{
int i = Integer.parseInt(line);
list.add(i);
}catch(Exception e){
try {
new BigInteger(line);
System.out.println("您输入" + line + "整数过大,请重新输入一个整数:");
} catch (Exception e1) {
try {
new BigDecimal(line);
System.out.println("您输入" + line + "是一个小数,请输入一个整数:");
} catch (Exception e2) {
System.out.println("您输入" + line + "是一个不合法的数据,请重新输入一个整数");
}
}
}
}
}
//5,定义一个写出流,并指定写出到D:\\number.txt文件中
FileOutputStream fos = new FileOutputStream("D:\\number.txt");
//6,将集合倒序遍历,并将遍历到的元素使用写出流写入到D:\\number.txt中
for (int i = list.size() - 1; i >= 0 ; i--) {
fos.write(list.get(i).toString().getBytes());
fos.write(" ".getBytes());
}
//7,关闭流,并提示以将数据出入到D:\\number.txt文件中
fos.close();
System.out.println("以将数据出入到 \"D:\\number.txt文件中\"!");
}
}
|
|