黑马程序员技术交流社区

标题: Scanner类的特点 [打印本页]

作者: 4049444026    时间: 2016-2-15 21:58
标题: Scanner类的特点
Scanner类的特点
        hasNextInt() :判断是否还有下一个输入项,其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx
        nextInt(): 获取下一个输入项。Xxx的含义和上个方法中的Xxx相同,默认情况下,Scanner使用空格,回车等作为分隔符
               
                public static void main(String[] args) {
                        Scanner sc = new Scanner(System.in);                //创建键盘录入对象
                        if(sc.hasNextInt()) {                                //判断键盘录入的是否是int类型的数据
                                int i = sc.nextInt();                        //键盘录入的数据存储在i中
                                System.out.println(i);
                        }else {
                                System.out.println("输入的类型错误");
                        }
       
                }
       
        bug问题:先用nextInt()接收int类型,再用nextLine()接收字符串的时候,会导致nextLine() 直接把回车接收到了, nextLine 不能继续接收字符串了
                1)先获取一个数值后,再创建一个新的键盘录入对象获取字符串。
                2)把所有的数据都先按照字符串获取,然后要什么,你就对应的转换为什么。(后面讲)
                出现问题代码:
                        Scanner sc = new Scanner(System.in);
                        System.out.println("请输入第一个整数:");
                        int i = sc.nextInt();                                //先用nextInt()接收int类型
                        System.out.println("请输入第二个字符串:");
                        String line2 = sc.nextLine();                        //再用nextLine()接收字符串
                        System.out.println("i = " + i + ", line2 = " + line2);        //line2不等着你去接收 就执行了这句输出语句
                为什么出现问题呢?
                        nextInt()是键盘录入整数的方法,当我们录入10的时候
                        其实在键盘上录入的是10和\r\n,nextInt()方法只获取10就结束了
                        nextLine()是键盘录入字符串的方法,可以接收任意类型,但是他凭什么能获取一行呢?
                        通过\r\n,只要遇到\r\n就证明一行结束
                解决:①
                        Scanner sc = new Scanner(System.in);
                        System.out.println("请输入第一个整数:");
                        int i = sc.nextInt();                                //先用nextInt()接收int类型
                        System.out.println("请输入第二个字符串:");       
                        Scanner sc2 = new Scanner(System.in);                //再创建一个新的键盘录入对象
                        String line = sc2.nextLine();                        //再用新的键盘录入对象的nextLine()接收字符串
                        System.out.println(i);
                        System.out.println(line);

                      ②(下面这种方案 明天就讲 我先写在这里 不懂的话 明天学了就明白了)
                        Scanner sc = new Scanner(System.in);
                        System.out.println("请输入第一个整数:");
                        String lin = sc2.nextLine();                        //先用nextLine()接收一个数字型的字符串  比如 "100"
                        int i = Integer.parseInt(lin);
                        System.out.println("请输入第二个字符串:");               
                        String line = sc2.nextLine();                        //再用新的键盘录入对象的nextLine()接收字符串
                        System.out.println(i);
                        System.out.println(line);


作者: P神    时间: 2016-2-16 17:30
不错哦````````````
作者: 安卓必备    时间: 2016-2-16 19:20
字符串接收再转换是什么时候的
作者: 糊涂真好    时间: 2016-2-18 02:42
马上就要考试了,看到你的整理让我是受益匪浅啊




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