首先,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()的区别的更多相关文章

  1. Java中方法next()和nextLine()的区别

    原创 Java中Scanner类中的方法next()和nextLine()都是吸取输入台输入的字符,区别: next()不会吸取字符前/后的空格/Tab键,只吸取字符,开始吸取字符(字符前后不算)直到 ...

  2. Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)

    Java中==.equals.hashcode的区别与重写equals以及hashcode方法实例  原文地址:http://www.cnblogs.com/luankun0214/p/4421770 ...

  3. java中的sleep()和wait()的区别

    对于sleep()方法,我们首先要知道该方法是属于Thread类中的.而wait()方法,则是属于Object类中的. sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监 ...

  4. java中的this与super的区别

    java中的this与super的区别 1. 子类的构造函数如果要引用super的话,必须把super放在函数的首位 代码如下: class Base { Base() { System.out.pr ...

  5. JAVA中extends 与implements有啥区别?

    JAVA中extends 与implements有啥区别?1. 在类的声明中,通过关键字extends来创建一个类的子类.一个类通过关键字implements声明自己使用一个或者多个接口.extend ...

  6. JAVA中String = null 与 String = "" 的区别

    JAVA中String = null 与 String = ""的区别 笔者今天在Debug的时候发现的NPE(NullPointerException),辛辛苦苦地调试了半天,终 ...

  7. Java中的throw和throws的区别

    Java中的throw和throws的区别 1.throw关键字用于方法体内部,而throws关键字用于方法体部的方法声明部分: 2.throw用来抛出一个Throwable类型的异常,而throws ...

  8. Java中instanceof和isInstance的具体区别

    Java中instanceof和isInstance的具体区别 在Think in Java泛型这一章遇到这个问题,一些博客模糊提到了isInstance是instanceof的动态实现,查阅文档参考 ...

  9. Java中wait和sleep方法的区别

    1.两者的区别 这两个方法来自不同的类分别是Thread和Object 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法(锁代码块和方法锁). wait ...

  10. Java中static final 与 final 的区别(转载)

    转自:http://advance0683.iteye.com/blog/1107732 Java中static final 与 final 的区别: 例子: Java代码 import java.u ...

随机推荐

  1. centos6.8安装JDK

    1.检测当前系统安装jdk信息       rpm -qa | grep jdk 2.如果检查到有安装信息,则用sudo yum remove XXX(XXX代表上面查到的结果) 3.下载rpm包,安 ...

  2. 浅谈WPF中的PreviewTextInput

    今天在使用TextBox的TextInput事件的时候,发现无论如何都不能触发该事件,然后百思不得其解,最后在MSDN上找到了答案:TextInput 事件可能已被标记为由复合控件的内部实现进行处理. ...

  3. github & markdown & collapse & table

    github & markdown collapse & table https://github.com/Microsoft/TypeScript/issues/30034 GitH ...

  4. 微服务架构中APIGateway原理

    背景 我们知道在微服务架构风格中,一个大应用被拆分成为了多个小的服务系统提供出来,这些小的系统他们可以自成体系,也就是说这些小系统可以拥有自己的数据库,框架甚至语言等,这些小系统通常以提供 Rest ...

  5. webpack安裝和卸載

    webpack安裝和卸載 安裝: 先裝好node和npm: 安裝package.json:進入到根目錄,運行npm init 新建全局webpack:cd退到全局目錄,運行npm install -g ...

  6. PHP涉及到的英文单调

    slashes [slæʃeis]:斜线 uppercase ['ʌpəˌkeɪs]:大写字母,简写uc strip [strɪp]:去掉 trim [trɪm]:整理(修剪) explode [ɪk ...

  7. HttpWebRequest using Basic authentication

    System.Net.CredentialCache credentialCache = new System.Net.CredentialCache(); credentialCache.Add( ...

  8. poj2186(tarjan缩点)

    题意:有n头奶牛,假如奶牛A觉得奶牛B很厉害,那么就有一条由A指向B的边,然后有个传递关系,if(A→B,B→C,那么A→C),让你求出被除了自己以外所有的奶牛都认为厉害的的奶牛个数: 解题思路:看到 ...

  9. linux-内核参数优化参考指标

    民间最全的Linux系统内核参数调优说   相信做运维的同仁,进行运维环境初建时,必须要考虑到操作系统内核参数的优化问题,本人经历数次的运维环境重建后,决定要自行收集一份比较完善的系统内核参数优化说明 ...

  10. eclipse添加tomcat服务器

    在网上找资料好辛苦,还不对,自己试了好久,终于成功了 还是一如既往的分享 右键 弄好以后发现如此简单| _ |