【Java基础】Scanner中next与nextLine区别

Scanner概念

scanner可以用来获取用户的输入,八个基本数据类型除字符外都可以输入,另外输入字符串有两种方式next与nextLine。接下来介绍他们的区别。

1.next与nextLine的区别

1.1 区别一
  	    String st1 = scanner.nextLine();
        String st2 = scanner.next();

        System.out.println("nextLine方式输入:" + st1);
        System.out.println("next方式输入:" + st2);

从运行结果看出:nextLine方式输入的字符串可以含有空格,也就是说它是以回车作为输入的结束符。

next输入的字符串不能含有空格,它以空格、tab、回车作为输入的结束符。

1.2 区别二
  	    int num = scanner.nextInt(); // 8
        String st = scanner.nextLine(); // hello java

        System.out.println(num + "===========" + st); // 8 =======

在这里插入图片描述

可以看到,还没等我输入字符串,本次输入就自动结束了。显然没有达到我的期望。

结论:nextLine会读取到回车作为他的值。

如何解决这个问题:

1.就以nextLine来读取上一次输入的回车作为它的值。

   	    int num = scanner.nextInt(); 
        scanner.nextLine(); //读取回车
        String st = scanner.nextLine(); 
        System.out.println(num + "===========" + st);

可以看出问题解决。

多一行代码总感觉不爽,还有没有其他解决方案呢?

2.以next来读入字符串,前提必须是所输入的字符串不能包含空格。

	    int num = scanner.nextInt();
        String st = scanner.next();
        System.out.println(num + "====" + st);

可以看出问题也可以解决。

3.在业务允许的情况下,可以将字符串输入放到第一行,避免读入回车作为他的值。

        String st = scanner.nextLine(); //第一行输入
        int num = scanner.nextInt(); 
        System.out.println(num + "====" + st);

在这里插入图片描述
问题也可以解决。

总结next与nextLine区别

nextnextLine
不能读入含有空格的字符串,以空格、Table、回车作为本次输入的结束符可以读入空格、以回车作为结束符
不会读取回车作为它的值会读取回车作为它的值
补充一种方法

可以通过把输入nextLine字符串当作一个方法封装起来,然后调用这个方法。


public class ScannerDemo {

	public static int getInt() {
		return new Scanner(System.in).nextInt();
	}
	
	public static String getString() {
		return new Scanner(System.in).nextLine();
	}
	
}

测试一下

	int x = ScannerDemo.getInt();
		String st =  ScannerDemo.getString();
		System.out.println(x);
		System.out.println(st);

在这里插入图片描述

可以看出nextLine读取回车的问题已经没有了。所以这种方法也是可行的。

  • 22
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值