Java中方法next()和nextLine()的区别
原创
Java中Scanner类中的方法next()和nextLine()都是吸取输入台输入的字符,区别:
- next()不会吸取字符前/后的空格/Tab键,只吸取字符,开始吸取字符(字符前后不算)直到遇到空格/Tab键/回车截止吸取;
- nextLine()吸取字符前后的空格/Tab键,回车键截止。
import java.util.Scanner;
import java.util.Vector; public class Main{
public static void main(String args[]) {
Scanner reader=new Scanner(System.in);
String s1=reader.nextLine();
String s2=reader.next();
System.out.println(s1);
System.out.println(s2);
}
}
运行样例:

可以看到next()只吸取了askldfj字符,空格后面的都舍弃了!
import java.util.Scanner;
import java.util.Vector; public class Main{
public static void main(String args[]) {
Scanner reader=new Scanner(System.in);
String s1=reader.next();
// String ss=reader.nextLine();
String s2=reader.nextLine();
System.out.println(s1);
System.out.println(s2);
}
}
将next()和nextLine()换个顺序
运行样例:

只输入了aaaa bbbb cccc,系统自动输出了两行:
aaaa
bbbb cccc
因为aaaa后面有个空格,next是不需要的,所以next读取结束,剩菜剩饭 bbbb cccc被nextLine捡了
解决方法是加上上面代码注意的 nextLine()
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
String s1=reader.next();
String s2=reader.nextLine();
System.out.println(s1);
System.out.println(s2);
}
}
abcdefg
abcdefg
//剩下两行
输入abcdefg后回车程序已经结束了,然后输出了abcdefg和两行换行,原因是因为nextLine吸收了next后的回车。所以要十分注意的是,两个nextLine尽量不要连在一起。而使用next不会出现这种情况,因为next吸取的第一个要求的是字符,最后一个要求是空格、Tab键、回车键。
20:25:47
2018-08-14
Java中方法next()和nextLine()的区别的更多相关文章
- 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中方法的参数传递机制
形参和实参 我们知道,在Java中定义方法时,是可以定义参数的,比如: public static void main(String[] args){ } 这里的args就是一个字符串数组类型的参数. ...
- java中ArrayList 和 LinkedList 有什么区别
转: java中ArrayList 和 LinkedList 有什么区别 ArrayList和LinkedList都实现了List接口,有以下的不同点:1.ArrayList是基于索引的数据接口,它的 ...
- Java中方法的重载
Java 中方法的重载 问: 什么是方法的重载呢? 答: 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方 ...
随机推荐
- 多线程设计模式(二):Future模式
一.什么是Future模型: 该模型是将异步请求和代理模式联合的模型产物.类似商品订单模型.见下图: 客户端发送一个长时间的请求,服务端不需等待该数据处理完成便立即返回一个伪造的代理数据(相当于商品订 ...
- C#简单操作app.config文件
即将操作的app.config文件内容如下 <?xml version="1.0" encoding="utf-8"?> <configura ...
- Python Twisted系列教程14:Deferred用于同步环境
作者:dave@http://krondo.com/when-a-deferred-isnt/ 译者:杨晓伟(采用意译) 你可以从这里从头开始阅读这个系列. 介绍 这部分我们要介绍Deferred的 ...
- MSDE2000
安装MSDE2000的时候,遇到的两个问题 sqlserver 小版本 SQL安装问题.系统说:为了安全,要求使用SA密码,请使用SAPWD开关提供同一密码
- c#winform图片绘制与图片验证码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- PHP数据结构之四 一元多项式的相加PHP单链实现
<?php /** *一元多项式的表示和相加 *一元多项式的表示采用单链表的形式 **/ header("content-type:text/html;charset=gb2312&q ...
- js监听文本框内容变化
js监听文本框内容变化 原理很简单,就是在外部先声明一个用来记录input值的变量,然后每0.1秒比较这个值与input的值,如果发生改变,则运行自己的代码,同时改变变量.从而实现对input值改变的 ...
- Perl 数据类型:标量、数组、哈希
Perl 数据类型Perl 是一种弱类型语言,所以变量不需要指定类型,Perl 解释器会根据上下文自动选择匹配类型. Perl 有三个基本的数据类型:标量.数组.哈希.以下是这三种数据类型的说明: 序 ...
- docker下 zookeeper集群
首先创建所需的文件夹 mkdir -p /data/{data1,data2,data3} mkdir -p /data/{datalog1,datalog2,datalog3} docker-com ...
- 回车换行0x0D和0x0A 小谈
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符.要是在这 ...