nextLine()和next()的区别

nextLine()和next()的区别和使用方法

  • next()

next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。比如,在控制台输入“ gjm gjm ”时,一次next()读入进来的仅仅是"gjm"。它不能得到带空格的字符串的!

  • nextLine()

nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符。比如,在控制台输入“ gjm gjm ”时,一次nextLine()读入进来的结果是" gjm gjm "。它是可以得到带空格的字符串的!


import java.util.Scanner;
public class Demo09 {
public static void main(String[] args) {
    test1();
    //test2();
}

public static void test1() {
    String s1,s2;
    Scanner sc=new Scanner(System.in);
    System.out.print("请输入第一个字符串:");
    s1=sc.nextLine();
    System.out.print("请输入第二个字符串:");
    s2=sc.next();
    System.out.println("输入的字符串是:"+s1+" "+s2);
}
public static void test2() {
    String s1,s2;
    Scanner sc=new Scanner(System.in);
    System.out.print("请输入第一个字符串:");
    s1=sc.next();
    System.out.print("请输入第二个字符串:");
    s2=sc.nextLine();
    //s2=sc.nextLine();
    System.out.println("输入的字符串是:"+s1+" "+s2);
}
}

结果

  • 当运行test1();时,结果如下示:
    在这里插入图片描述
  • 当运行test2时,结果如下图
    在这里插入图片描述

即在我刚输入完test demo后,按下回车,直接弹出结果,程序执行完毕【疑惑!!我第二个字符串还没输入呢就返回结果了】。
通过分析发现:是next()读不到回车的,而是将回车作为分隔符,并且留给了nextLine(),nextLine()毫不客气,直接读入,然后结束。
故想要输出和test1()一样的结果,需要将test2()中nextLine()后再加一个nextLine(),第一个用来读next()留下的回车分隔符,第二个用来读work。故如上所示,将第25行程序加入,然后执行,就会发现结果和test1()一样。

发布了11 篇原创文章 · 获赞 3 · 访问量 152

猜你喜欢

转载自blog.csdn.net/weixin_43362002/article/details/103948202