[转] Java:对Scanner的useDelimiter()方法的疑问
【From】https://segmentfault.com/q/1010000003885362
Windows下,我们在键盘上按下
Enter
键,实际上输入的是回车和换行两个字符:\r\n
,ASCII码分别是13和10
默认情况下,
Scanner
获取到的输入里面是不包含回车换行的。比如你输入____one_two\r\n
,它只会从____one_two
里面获取输出(当然,可能要通过多次next()
来获取),自动把回车换行过滤掉了但是当我们强制以回车或换行为分隔符时,它就不会自动过滤回车换行符了。比如你以回车符
\n
为分隔符的话,输入上面的内容会得到____one_two\r
,这也就是返回的length
为12的原因。可以用下面的程序来验证,可以发现获取到的字符串的最后一个字符ASCII码为13,表示它是一个回车符\r
:
// 输入`____one_two\r\n`来测试
Scanner scanner = new Scanner(System.in);
scanner.useDelimiter("\n");
String str = scanner.next();
// 打印获取到的内容和其长度,以及最后一个字符的ASCII码
System.out.println(str + ":" + str.length()
+ " (" + str.codePointAt(str.length()-1) + ")");
解决方法:用\r\n
作为分隔符就正常了
[转] Java:对Scanner的useDelimiter()方法的疑问的更多相关文章
- Java中Scanner的使用方法
Scanner是SDK1.5新增的一个类,但是使用该类创建一个对象.Scanner reader=new Scanner(System.in); 然后reader对象调用下列方法(函数),读取用户 ...
- java 10-4 Scanner方法
Scanner:用于接收键盘录入数据 常用的两个方法(int举例): public int nextInt():获取一个int类型的值 public String nextLine():获取一个St ...
- java中Scanner类nextLine()和next()的区别和使用方法
转载:http://blog.csdn.net/zhiyuan_ma/article/details/51592730 在实现字符窗口的输入时,很多人更喜欢选择使用扫描器Scanner,它操作起来比较 ...
- 【Java】 Scanner类的几个方法
通过 Scanner 类可以获取用户的输入,创建 Scanner 对象的基本语法如下: Scanner sc = new Scanner(System.in); nextInt().next()和ne ...
- java.util.Scanner中hasNext()方法和next()方法的区别
先说结论: 两者均根据空格划分数据 两者在没有数据输入时均会等待输入 next()方法会将空格划分的数据依次输出,运行一次,输出一个 hasNext()方法会跟着next()方法移动,当前数据不为空, ...
- java利用Scanner获取键盘输入
首发地址:我的网易博客 在运行一个java程序的时候,可能我们需要在运行的时候传递一些参数进去...咋办呢... java提供了一个Scanner类,利用这个类,我们可以很方便的获取键盘输入的参数.. ...
- java.util.Scanner的日常用法
Scanner是新增的一个简易文本扫描器,在 JDK 5.0之前,是没有的.查看最新在线文档: public final class Scanner extends Object implements ...
- java.util.Scanner应用详解++扫描控制台输入
java.util.Scanner应用详解 java.util.Scanner是Java5的新特征,主要功能是简化文本扫描.这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java ...
- (转)java.util.Scanner应用详解
java.util.Scanner应用详解 java.util.Scanner是Java5的新特征,主要功能是简化文本扫描.这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java ...
随机推荐
- boost库中sleep方法详解
博客转载自:https://blog.csdn.net/huang_xw/article/details/8453506 boost库中sleep有两个方法: 1. 这个方法只能在线程中用, 在主线程 ...
- c语言实践 用1角 2角 5角 凑成10元钱的方法
/* 用1角,2角,5角凑出10元钱,有几种办法. 也就是0.1a+0.2b+0.3c=10,化简一下就是 a=100-2b-3c 因为a的范围是0到100,所以弄一个循环 把a的值从0尝试到100, ...
- activex打包
http://www.cnblogs.com/weiwin/p/4493835.html activeX 打包 原文 http://www.docin.com/p-409284488.html C ...
- using JSTL
http://docs.oracle.com/javaee/5/tutorial/doc/bnake.html JSTL(JSP Standard Tag Library)
- 正确理解WPF中的TemplatedParent (转贴)
http://blog.csdn.net/idebian/article/details/8761388 (注:Logical Tree中文称为逻辑树,Visual Tree中文称为可视化树或者视觉树 ...
- MariaDB 数据库迁移
一.为什么要迁移 我的七月小说站点放在JCloud上,恕我直言,配合我的Aliyun服务器进行数据交互,那是相当的慢,没办法,京东云上面十几块钱的公网ip,也就这样了. 所以我决定把web服务器和数据 ...
- spring @Async 线程池使用
最近公司项目正逐渐从dubbo向springCloud转型,在本次新开发的需求中,全部使用springcloud进行,在使用时线程池,考虑使用spring封装的线程池,现将本次使用心得及内容记录下来 ...
- 【模板】二维凸包 / [USACO5.1]圈奶牛Fencing the Cows
Problem surface 戳我 Meaning 坐标系内有若干个点,问把这些点都圈起来的最小凸包周长. 这道题就是一道凸包的模板题啊,只要求出凸包后在计算就好了,给出几个注意点 记得检查是否有吧 ...
- 「BZOJ 2152」聪聪可可
题目链接 戳这 \(Solution\) 这道题看起来就像点分治对吧.没错就是点分治. 什么是点分治 如果你不会点分治,可以去看看这儿 现在看到这里,首先确保你已经会了点分治,如果不会你还往下看,听不 ...
- Jmeter_远程启动
Jmeter 是Java 应用,对于CPU和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误. 其实,Jmeter的 ...