关于Java中扫描仪next()与nextLine()的区别
首先,next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。
简单地说,next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next()方法不能得到带空格的字符串。
而nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。
记得有个博客上有一句话(next()是我只要文字,而nextLine()是啥我都要)
实例1:
public class H_Z03 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("输入s:");
String s = in.nextLine();
System.out.println("输入s1");
String s1 = in.next();
System.out.println(s);
System.out.println(s1);
}
}
输出结果:
输入s:
张三
输入s1
李四
张三
李四
这个结果是输入正常,显示也正常的。
示例2
public class H_Z04 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("输入s:");
String s = in.next();
System.out.println("输入s1");
String s1 = in.nextLine();
System.out.println(s);
System.out.println(s1);
}
}
输入输出结果:
输入s:
张三
输入s1
张三
这个出现了问题只让输入“张三”,
查询相关资料发现:
String s1 = in.nextLine();
接受空格之后的字符(包括回车、空格、空格之后的字符)
测试结果如下:
public class H_Z05 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("输入s:");
String s = in.next();
System.out.println("输入s1");
String s1 = in.nextLine();
System.out.println(s);
System.out.println(s1);
}
}
输入输出结果:
输入s:
张三 李四
输入s1
张三
李四
总结:
nextLine()会自动接收next()之后的字符,但是这个指的是对同一个对象。
解决方法:
public class H_Z06 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("输入s:");
String s = in.next();
System.out.println("输入s1");
in.nextLine();
String s1 = in.nextLine();
System.out.println(s);
System.out.println(s1);
}
}
输入输出结果:
输入s:
张三 李四
输入s1
王五
张三
王五
关于Java中扫描仪next()与nextLine()的区别的更多相关文章
- Java中方法next()和nextLine()的区别
原创 Java中Scanner类中的方法next()和nextLine()都是吸取输入台输入的字符,区别: next()不会吸取字符前/后的空格/Tab键,只吸取字符,开始吸取字符(字符前后不算)直到 ...
- Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)
Java中==.equals.hashcode的区别与重写equals以及hashcode方法实例 原文地址:http://www.cnblogs.com/luankun0214/p/4421770 ...
- java中的sleep()和wait()的区别
对于sleep()方法,我们首先要知道该方法是属于Thread类中的.而wait()方法,则是属于Object类中的. sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监 ...
- java中的this与super的区别
java中的this与super的区别 1. 子类的构造函数如果要引用super的话,必须把super放在函数的首位 代码如下: class Base { Base() { System.out.pr ...
- JAVA中extends 与implements有啥区别?
JAVA中extends 与implements有啥区别?1. 在类的声明中,通过关键字extends来创建一个类的子类.一个类通过关键字implements声明自己使用一个或者多个接口.extend ...
- JAVA中String = null 与 String = "" 的区别
JAVA中String = null 与 String = ""的区别 笔者今天在Debug的时候发现的NPE(NullPointerException),辛辛苦苦地调试了半天,终 ...
- Java中的throw和throws的区别
Java中的throw和throws的区别 1.throw关键字用于方法体内部,而throws关键字用于方法体部的方法声明部分: 2.throw用来抛出一个Throwable类型的异常,而throws ...
- Java中instanceof和isInstance的具体区别
Java中instanceof和isInstance的具体区别 在Think in Java泛型这一章遇到这个问题,一些博客模糊提到了isInstance是instanceof的动态实现,查阅文档参考 ...
- Java中wait和sleep方法的区别
1.两者的区别 这两个方法来自不同的类分别是Thread和Object 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法(锁代码块和方法锁). wait ...
- Java中static final 与 final 的区别(转载)
转自:http://advance0683.iteye.com/blog/1107732 Java中static final 与 final 的区别: 例子: Java代码 import java.u ...
随机推荐
- hadoop的缺点
Hadoop的限制 Hadoop只能执行批量处理,并且只以顺序方式访问数据.这意味着必须搜索整个数据集,即使是最简单的搜索工作.
- Java 基础类型 默认值
(1)数据库里的列,如果有默认值,不能赋值有业务含义的值. (2)int 默认值 java会分配默认值的额.
- js外部调用layui.use中的函数的写法
layui模块化的写法固然不错,但也有让人不适应的一些地方 外部调用函数的写法就让人不太舒服 需要在函数名前面加上window这个前缀,就不太舒服 补充:window前缀,是全局变量的声明方式 如下: ...
- javascript中 json数据的解析与序列化
首先明确一下概念: json格式数据本质上就是字符串: js对象:JavaScript 中的几乎所有事务都是对象:字符串.数字.数组.日期.函数,等等. json数据的解析: 就是把后端传来的json ...
- WEB相关概念、Tomcat初识、Servlet、基本知识。
/* * 一.web的概念? * 1.web就是在http协议基础之上, 利用浏览器进行访问的网站. * Web Page指网站内的网页. 我们常说的WWW(World Wide Web 万维网)就是 ...
- Js--动态生成表格
<div> <h1>动态生成表格</h1> <div id="table1"> 行 ...
- Linux命令替换字符串
:%s/str1/str2/ 用str2替换str1
- Web API2 使用EF Code Migrations to Seed DB
console Enable-Migrations 运行这个命令,添加一个文件夹Migrations,Configuration.cs在这文件夹中 打开 Configuration.cs file. ...
- Atcoder Beginner Contest 121 D - XOR World(区间异或和)
题目链接:https://atcoder.jp/contests/abc121/tasks/abc121_d 题目很裸(Atcoder好像都比较裸 就给一个区间求异或和 n到1e12 肯定不能O(n) ...
- 【C/C++】实现龙贝格算法
1. 复化梯形法公式以及递推化 复化梯形法是一种有效改善求积公式精度的方法.将[a,b]区间n等分,步长h = (b-a)/n,分点xk = a + kh.复化求积公式就是将这n等分的每一个小区间进行 ...