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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨强彪 中级黑马   /  2015-3-9 20:41  /  1347 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这是我看的一个程序里单独的
public static void main(String[] args) throws Exception
        {
                // TODO Auto-generated method stub
                BufferedReader br=new BufferedReader(new InputStreamReader(System.in));  
                GuanLi gu=new GuanLi();
                while(true)
                {
                        System.out.println("请选择你要进行的操作:");
                        System.out.println("A:添加一个员工");
                        System.out.println("B:查找一个员工");
                        System.out.println("C:修改一个员工工资");
                        System.out.println("D:删除一个员工");
                        System.out.println("E:遍历所有员工");
                        System.out.println("F:退出系统");
                       
                        String anniu=br.readLine();                                  //键盘输入代码
                        if(anniu.equals("A"))
                        {
                                System.out.println("请输入添加员工编号:");
                                String number=br.readLine();
                                System.out.println("请输入添加员工姓名:");
                                String name=br.readLine();
                                System.out.println("请输入添加员工年龄:");
                                int age=Integer.parseInt(br.readLine());
                                System.out.println("请输入添加员工工资:");
                                float soal=Float.parseFloat(br.readLine());
                                Yuangong yu=new Yuangong(name,number,age,soal);
                                gu.addyuan(number, yu);
                                System.out.println("新员工添加成功");
                        }
                        else if(anniu.equals("B"))
                        {
                                System.out.println("请输入员工编号:");
                                String number=br.readLine();
另一个程序在BufferedReader br前一行还得写代码Inputer。。。如下图  ,他们究竟是什么情况要在一起用?

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 加油~

查看全部评分

9 个回复

正序浏览
本帖最后由 z47057554 于 2015-3-10 13:49 编辑

这是匿名对象的问题,
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));  中的
new InputStreamReader(System.in)是个匿名对象,也就是没给他起名字,直接当参数,用完就没,只能用一次
它是下面格式的简写,它的出现是为了简化代码书写,局限性就是,用完一次就变垃圾,无法再次使用,会被java回收

InputStreamReader isr=new InputStreamReader(System.in);
这是先给对象赶起个名字,然后再把它当作参数
BufferedReader br=new BufferedReader(isr);
有名字后用名字当参数传就可以,用完后不会变垃圾,因为还有isr指向它
回复 使用道具 举报
楼主不要怕,这种用法很固定的,见几次就好啦,我之前一直自学,今天第一次发言,得第一个技术分,还挺有缘分的。
回复 使用道具 举报
BufferedReader需要关联的是Reader类型的字符流对象,而System.in返回的是一个InputStream类型的字节流数据,需要通过InputStreamReader这个“字节流通向字符流的桥梁”来转换为字符类型的数据流。
回复 使用道具 举报
其中涉及到字节流/字符流的转换,BufferedReader是字符流,System.in是对应于与键盘的字节输入流,查看文档,System.in返回值是InputStream,因此,从System.in这个InputStrem到BufferedReader这个Reader(字符流),需要借助InputStreamReader这个转换流,把字节流转换成字符流。
回复 使用道具 举报
第二种写法:InputStreamReader ist = new InputStreamReader(System.in);  BufferedReader br = new Buffered(ist); 这两种写法没区别
回复 使用道具 举报
第一种写法:BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
回复 使用道具 举报
版主正解啊
回复 使用道具 举报
那是Scanner的底层,就是获取用户控制台输入的输入流。Scanner sc = new Scanner(System.in);
回复 使用道具 举报
哪里不太明白?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马