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);

AJPFX简述Scanner类的特点的更多相关文章

  1. AJPFX简述Object类

    Object类是所有类的超类,所有类都拥有Object的方法.其中的toString.equals是对业务模型而言非常常用的方法.a)     toString方法当调用System.out.prin ...

  2. 第十三章 字符串 (四)之Scanner类

    一.Scanner简述 Scanner扫描器类本质上是由正则表达式实现的,可以接受任何能产生数据的数据源对象,默认以空白符进行分词(包括\n等),使用各种next方法进行扫描匹配,获取匹配的数据. 二 ...

  3. Scanner类

    Scanner类:用于获取用户的键盘输入 成员方法: public boolean hasNextXxx():判断是否某种类型的元素 public Xxx nextXxx():获取该元素 常用方法: ...

  4. java中scanner类的用法

    在Eclipse中编写程序时,如果我们的变量是需要手动输入的时候,我们就可以用到scanner类了. Scanner类,这是一个用于扫描输入文本的新的实用程序.由于任何数据都必须通过同一模式的捕获组检 ...

  5. c语言中的scanf在java中应该怎么表达,Scanner类。

    1 java是面向对象的语言 它没有像C语言中的scanf()函数,但是它的类库中有含有scanf功能的函数 2 java.util包下有Scanner类 Scanner类的功能与scanf类似 3 ...

  6. Java中Scanner类和BufferReader类之间的区别

    java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串.它本质上是使用正则表达式去读取不同的数据类型. Java.io.BufferedReader类为了能够高效的 ...

  7. Java用Scanner类获取用户输入

    用Java编写程序时,有些数据需要用户输入,这个时候需要调用java提供的Scanner类,这个类在包java.util下,比如求一个矩形的面积,简单的看一下用法: import java.util. ...

  8. Scanner类的使用

    Scanner类的使用 (接受键盘输入) java.util.Scanner是Java5的新特征,主要功能是简化文本扫描.这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java AP ...

  9. Android(java)学习笔记97:Scanner类使用

    package cn.itcast_01; /* * Scanner:用于接收键盘录入数据. * * 前面的时候: * A:导包 * B:创建对象 * C:调用方法 * * System类下有一个静态 ...

随机推荐

  1. Yii2 behaviors中verbs access的一些理解

    public function behaviors() { return ArrayHelper::merge(parent::behaviors(), [ 'verbs' => [ 'clas ...

  2. XMU C语言程序设计实践(5)

    •       使用动态链表完成一个简单的商品库存信息管理系统. •       商品信息包括如下字段:商品号.商品名称.商品库存 •       函数 create:接收用户输入的商品号和商品名称的 ...

  3. (linux)likely和unlikely函数

      在Linux内核中likely和unlikely函数有两种(只能两者选一)实现方式,它们的实现原理稍有不同,但作用是相同的,下面将结合linux-2.6.38.8版本的内核代码来进行讲解. 1.对 ...

  4. date format记录

    各种日期格式定义,容易忘记,这里备注下: * 支持格式为 yyyy.MM.dd G 'at' hh:mm:ss z 如 '2002-1-1 AD at 22:10:59 PSD'<br> ...

  5. codeforces 443 B. Kolya and Tandem Repeat 解题报告

    题目链接:http://codeforces.com/contest/443/problem/B 题目意思:给出一个只有小写字母的字符串s(假设长度为len),在其后可以添加 k 个长度的字符,形成一 ...

  6. rcfile

    转自:http://flyingdutchman.iteye.com/blog/1871025 在当前的基于Hadoop系统的数据仓库中,数据存储格式是影响数据仓库性能的一个重要因素.Facebook ...

  7. 移植tslib库出现selected device is not a touchscreen I understand的解决方法

    首发平台:微信公众号baiwenkeji 很多人在做触摸屏驱动实验,移植tslib库时,可能会出现错误提示“selected device is not a touchscreen I underst ...

  8. JavaScript-Tool:jqgrid

    ylbtech-JavaScript-Tool:jqgrid jqGrid 是一个用来显示网格数据的jQuery插件,文档比较全面,附带中文版本. 1.返回顶部   2.返回顶部   3.返回顶部   ...

  9. zepto.js 总结

    zepto.js 中的注意事项 ,详见:http://www.cnblogs.com/samwu/archive/2013/06/06/3121649.html zepto被弃用的原因:详见:http ...

  10. nodejs QueryString模块 详解

    QueryString模块 "QueryString" 模块用于实现URL参数字符串与参数对象的互相转换 此类一共包括4个方法: querystring.stringify(obj ...