博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java学习——常用类的学习之Scanner
阅读量:3945 次
发布时间:2019-05-24

本文共 2984 字,大约阅读时间需要 9 分钟。

Java学习——常用类的学习之Scanner

Scanner是一个常见的键盘录入的一个类。

1.Scanner的构造方法原理

Scanner有这么一个构造:

Scanner(InputStream source)

官方文档给出的解释是: 构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。反正说了这么多它也就是用来做键盘录入的。

再来看,System类下有一个静态的字段:

public static final InputStream in;
这是一个标准的输入流,对应着键盘录入。

2.Scanner的使用

  • 基本格式:

    hasNextXxx()

    判断下一个是否是某种类型的元素,其中Xxx可以是Int,Double等。
    如果需要判断是否包含下一个字符串,则可以省略Xxx
    nextXxx()
    获取下一个输入项。Xxx的含义和上个方法中的Xxx相同

看起来可能有些生涩难懂,我们看一下下面的例子:

public class Test {    public static void main(String[] args) {        //创建一个Scanner对象        Scanner sc = new Scanner(System.in);        //用该对象调用hasNextInt()方法,判断下一个输入是不是Int类型,返回值为boolean类型        boolean b = sc.hasNextInt();        //键盘录入一个字符串类型的数据        String s = sc.nextLine();        //打印判断结果        System.out.println(b);    }}        /*            输入:                  张三                         结果为:                  false         */

由此可见hasNextXxx()方法的作用是判断其下一个输入的数据的数据类型是不是该类型,该方法有返回值且返回值为boolean类型。

我们平常用到最多的还是nextXxx()方法,我们来看如下例子:

public class Test1 {    public static void main(String[] args) {        //创建一个Scanner对象        Scanner sc = new Scanner(System.in);                //提示:请输入一个整数类型的数字        System.out.println("请输入一个整数类型的数字:");                //键盘录入一个Int类型的数据        int s = sc.nextInt();                //打印输入的结果        System.out.println("你输入的数字是:"+s);        /*       		输出:				请输入一个整数类型的数字:				123				你输入的数字是:123         */    }}
  • 注意事项:
    当我们先录入数字类型,再录入字符串类型时会出现一个问题,代码如下:
public class Test {    public static void main(String[] args) {        //创建一个Scanner对象        Scanner sc = new Scanner(System.in);        //提示:请输入一个整数类型的数字        System.out.println("请输入一个整数类型的数字:");        //键盘录入一个Int类型的数据        int s = sc.nextInt();        //提示输入一个字符串        System.out.println("请输入一个字符串:");        //键盘录入一个字符串        String str = sc.nextLine();        //打印输入的结果        System.out.println("你输入的数字是:"+s);        System.out.println("你输入的字符串是:"+str);    }}
/*        输出结果:            请输入一个整数类型的数字:            123            请输入一个字符串:            你输入的数字是:123            你输入的字符串是:         */

我们不难发现,当我们先输入数字类型时,按下Enter键,直接略过了输入字符串的步骤。那么是为什么呢?

其实并不是略过了输入字符串的步骤,其实是当你输入完数字时,按下Enter,这个Scanner对象将你按下的Enter键当成字符串给录入进去了。

那么,当我们想避免这个问题时,应该怎么做?其实我们可以再new一个Scanner对象,让它去单独录入字符串,就不会出现这种问题了,代码如下:

public class Test3 {    public static void main(String[] args) {        //创建一个Scanner对象        Scanner sc = new Scanner(System.in);        //提示:请输入一个整数类型的数字        System.out.println("请输入一个整数类型的数字:");        //键盘录入一个Int类型的数据        int s = sc.nextInt();        //重新创建一个新的Scanner对象        Scanner sc2 = new Scanner(System.in);        //提示输入一个字符串        System.out.println("请输入一个字符串:");        //键盘录入一个字符串        String str = sc2.nextLine();        //打印输入的结果        System.out.println("你输入的数字是:"+s);        System.out.println("你输入的字符串是:"+str);    }}
/*        输出:            请输入一个整数类型的数字:            123            请输入一个字符串:            张三            你输入的数字是:123            你输入的字符串是:张三         */

这样我们就避免了这个问题,当然还有一种方法,就是我们将所有数据都用字符串形式录入,录入完成之后,想要什么类型,就转换成什么数据类型,这种方法在这里我就不做过多的说明了。

转载地址:http://ixiwi.baihongyu.com/

你可能感兴趣的文章
Mac截图快捷键大全
查看>>
扩展Spring Security-用户密码自定义加密的快速实现
查看>>
Log4j异步日志简明配制
查看>>
扩展Spring Security-国际化终极配制
查看>>
在Mac OS系统下得Linux虚拟机中安装Confluence3
查看>>
在Eclipse中调试Jetty应用的配置(XML配置文件方式)
查看>>
Ext-3.1.0下组件中按钮居中问题的记要
查看>>
MacOS下使用screen命令运行后台程序
查看>>
东北人的幽默,《红男绿女》中经典对白,看过的人都明白
查看>>
印象后海
查看>>
看了这54句,你就看懂了人性
查看>>
PowerDesigner数据模型设计拾遗
查看>>
从Spring MVC扩展中学习OO设计(一)
查看>>
八招赚钱方法
查看>>
70个面试技巧,很实用哦
查看>>
Communication - The cardigans
查看>>
晒书名:已收藏O'Reilly出版社‘动物世界’系列图书(一)
查看>>
晒书名:已收藏O'Reilly出版社‘动物世界’系列图书(二)
查看>>
从银行WebService报文接口系统中,学习敏捷设计
查看>>
区分IE和Firefox浏览器的CSS样式写法
查看>>