黑马程序员技术交流社区

标题: 判断用户输入的数据是否是一个整数的小案例,很有代表性 [打印本页]

作者: LShu    时间: 2016-9-5 13:49
标题: 判断用户输入的数据是否是一个整数的小案例,很有代表性
这个小案例所涉及到的知识点还挺多的,涉及到的循环,集合类,异常处理,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文件中\"!");
        }
}



作者: zzdhm    时间: 2016-9-5 16:14

作者: Ssafe    时间: 2016-9-5 17:45
这个案例很棒,就是对这一块不熟,可以好好的学习了




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