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. iOS 如何改变表视图分割线在iOS7中的默认偏移

    - (void)viewDidLoad { [super viewDidLoad]; self.automaticallyAdjustsScrollViewInsets = NO; if ([self ...

  2. POJ1077 Eight —— 经典的搜索问题

    题目链接:http://poj.org/problem?id=1077 Eight Time Limit: 1000MS   Memory Limit: 65536K Total Submission ...

  3. 「BZOJ3438」小M的作物(最小割

    3438: 小M的作物 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1891  Solved: 801[Submit][Status][Discus ...

  4. HNOI2008 明明的烦恼 (purfer序列 + 组合数学)

    传送门 这道题题意描述很清楚,不过我自己做的时候确实是一头雾水……又看了题解,发现要用到一个新知识,叫purfer序列. 我们来简单说一下什么是purfer序列.它可以被看作一种树的表现形式.一棵含有 ...

  5. bzoj2660最多的方案——数位DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2660 首先,多种方案的出现是因为一个较大的斐波那契数可以变成两个较小的: 用一个01串来表示 ...

  6. Block 与 delegate

    代理设计模式对于iOS开发的人来说肯定很熟悉了,代理delegate就是委托另一个对象来帮忙完成一件事情,为什么要委托别人来做呢,这其实是MVC设计模式中的模块分工问题,例如View对象它只负责显示界 ...

  7. apache日志信息详解

     一.访问日志的格式 Apache内建了记录服务器活动的功能,这就是它的日志功能.下文详细介绍Apache的访问日志.错误日志.以及如何分析日志数据,如何定制Apache日志,如何从日志数据生成统计报 ...

  8. 【华为2016上机试题C++】最高分是多少

    [编程题] 最高分是多少 时间限制:1秒 空间限制:65536K 老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问.当然,老师有时候需要更新某位同学的成绩. 输入描述: 输入包括 ...

  9. Android Fragment使用小结及介绍

    目录(?)[-] 一什么是Fragment 二Fragment的生命周期 三Fragment的两种添加方式addreplace 四两种添加方式性能比较 偶记得第一次接触Fragment,觉得好牛叉的组 ...

  10. iOS Button选中与取消

    /** * 是否点击 */ @property (nonatomic ,assign) BOOL selected; /** *  button 点击事件选中取消选中 */ - (void)handl ...