博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 常用对象-Scanner类
阅读量:4704 次
发布时间:2019-06-10

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

2017-11-02 16:33:11

Scanner类:一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。

Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。

*构造方法

*常用方法

基本格式:hasNextXxx()判断是否还有下一个输入项,其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,可以省略Xxx

       nextXxx():获取下一个输入项。

默认情况下,Scanner使用空格,回车作为分隔符(也就是在读取的时候默认跳过这两个字符,不进行读取)。在敲入回车后,将当前缓冲区的内容交给Scanner进行扫描(包括回车符\r\n)。

常用的有Public int nextInt(),Public String nextLine()

先获取数值类型,再获取字符串类型会出现问题。这个问题在C++中也遇到过。

原因解析:当敲完数字并回车时,此时缓冲区内的数据是数字加上回车符,在Scanner扫描的时候,把数字交给了x,由于是使用的nextline,导致也会读取回车字符,所以把回车符交给了y,导致了这种情况。

public static void main(String[] args) {        Scanner sc = new Scanner(System.in);                //y会为空        int x=sc.nextInt();        String y=sc.nextLine();        System.out.println(x+y);    }

解决方法:

A:重定义一个扫描器

B:先全部使用字符串获取,再转换

public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        //y会为空        int x=sc.nextInt();        Scanner sc2 = new Scanner(System.in);        String y=sc2.nextLine();        System.out.println(x+y);    }

如果把nextline换成next就没有问题了,no zuo no die啊,哈哈。

Scanner sc = new Scanner(System.in);        int x = sc.nextInt();        String s = sc.next();        System.out.println(x + s);

 一些测试:

1)新定义的Scanner是否会把前一个的缓冲区给破坏

Scanner sc = new Scanner(System.in);        System.out.println(sc.nextInt());        Scanner sc2 = new Scanner(System.in);        System.out.println(sc2.nextInt());        System.out.println(sc.nextInt());

 

结论:不会,前一个缓冲区内容已经交给了sc,新创建的sc2读取的是自己的缓冲区内容。

2)next读取字符串是否会读到换行符

Scanner sc = new Scanner(System.in);        System.out.print(sc.next());        System.out.print(sc.next());        System.out.println("是否读到了换行符");

 

结论:不会,会自动跳过空格和换行符。

 

转载于:https://www.cnblogs.com/TIMHY/p/7772928.html

你可能感兴趣的文章
[转]javascript实现限制上传文件的大小
查看>>
我的Java设计模式-策略模式
查看>>
C# 报表接口样例,简单实用
查看>>
C++常见内存错误及解决方案
查看>>
控制台应用程序窗口无法输入汉字解决办法
查看>>
Java中实现String.padLeft和String.padRight
查看>>
winCVS 使用的一个小要点
查看>>
一个关于session的问题
查看>>
加快开发时间的8个CSS的预处理程序
查看>>
dom元素高度、屏幕高度 获取
查看>>
asp.net 设置session失效时间
查看>>
杭电多校第四场 E Matrix from Arrays
查看>>
ReactiveCocoa操作方法-线程\时间
查看>>
oracle 分析函数
查看>>
CHD-5.3.6集群上sqoop安装
查看>>
解决无/var/log/messages 问题
查看>>
ThinkPHP5.0中Request请求对象的常用操作
查看>>
js 判断是不是空、值是否存在
查看>>
windows 启动关闭Oracle监听和服务 (转载)
查看>>
【小程序云开发入门】quickStart
查看>>