java中next()和nextline()用法区别(详细说明)

一,方法说明

使用扫描器Scanner时,遇到了字符串一般会使用next()和nextLine()方法。Scanner类中的方法next()和nextLine()都是读入输入的字符,区别在于:
next():不会读取字符前/后的空格/Tab键,只读取字符,当开始读取字符时,当遇到空格/Tab键/回车截止读取;
nextLine():读取字符前后的空格/Tab键,有回车键时截止读取。

二,空格的情况(tab键相当于多个空个

1.测试代码

import java.util.Scanner;
public class test1 {
    public static void main(String[] args) {
        System.out.println("第一次输入:");
        Scanner sc=new Scanner(System.in);
        String s1=sc.next();
        System.out.println(s1);

        System.out.println("第二次输入:");
        String s2=sc.nextLine();
        System.out.println(s2);


    }
}


2.中间出现空格时

分析:中间出现空格时。
next()方法只读取了一个我爱你中国
nextline()方法读取了整个字符串,包括空格
中间出现空格测试情况:

在这里插入图片描述

3.开头出现空格时

分析:开头出现空格时。
next()方法只读取了一个我爱你中国,开头出现空格不影响,关心第一个连续字符串后面的空格。
nextline()方法读取了整个字符串,包括开头和中间的空格。
开头出现空格测试情况:

在这里插入图片描述

三,回车键的情况

next()方法开头出现回车不会结束运行,而nextline()当遇到是回车键时直接停止。

分析:回车键的情况

画得有点丑,'/r’是回车键的位置。
next()方法开头遇到回车键一样可以读取后面字符串。
nextline()当遇到回车键时直接停止,看输出,nextline()方法应该输出了一个回车键。
回车键测试结果:

在这里插入图片描述

值得注意的是:

nextInt()、nextdoublie()、nextfloat()和next()方法的效果是一样的

四,常见问题:直接跳过了nextline()方法。并没有执行到。

测试代码

import java.util.Scanner;
public class test1 {
    public static void main(String[] args) {
        System.out.println("第一次输入:");
        Scanner sc=new Scanner(System.in);
        String s1=sc.next();

        System.out.println("第二次输入:");
        String s2=sc.nextLine();

        System.out.println(s1);
        System.out.println(s2);


    }
}

问题:只有第一次输入(绿色为输入的字),第二次输入直接被跳过了,还把第一次输入的后面连续的字符串当作了nextline()输入的了。
在这里插入图片描述
问题发生原因:​ Scanner是一个扫描器,当我们读取键盘数据时,先存到缓存区等待读取,
​ next()方法读取到空白符就结束(输出不包括空格),也就是读取完“我爱你中国”结束,后半节字符串被当作nextline()方法的输入了(输出包括空格),后面还有个回车键,回车键“\r”留给了nextLine()让其结束。
​ nextLine()读取到回车“\r”结束。
解决办法:在使用nextline()方法之前加上一个nextline()方法就可以了,让第一个nextline()方法把不必要的字符串吃掉包括回车符也一起吃掉,这样就正常使用了。

测试修改后代码

import java.util.Scanner;
public class test1 {
    public static void main(String[] args) {
        System.out.println("第一次输入:");
        Scanner sc=new Scanner(System.in);
        String s1=sc.next();
         //在使用nextline()方法之前加上一个nextline()方法
        String s2=sc.nextLine();
        System.out.println("第二次输入:");
        String s3=sc.nextLine();

        System.out.println(s1);
        System.out.println(s3);


    }
}

在这里插入图片描述

  • 31
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yjg_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值