Scanner对象中next()和nextLine()方法的区别

先说结论:
1.next()方法不会读取有效字符前的空白字符,包括回车和空格。而且在读取有效字符后指针的位置就在其末尾(当前行)。

2.nextLine()方法可以读取当前行的所有字符,包括空白字符。而且在读取后指针的位置会移到下一行开头。

第一点证明如下:

import java.util.Scanner;
public class Main{
public static void main(String[] args){

		 Scanner sc=new Scanner(System.in); 
		 for(int i=0;i<4;i++) {
			 System.out.println(i+":"+sc.next());
		 }
		 
	}
}

结果如下:
在这里插入图片描述

分析说明:
输入“【空格】【空格】【空格】 3”,前面的空格被忽略,只输出有效字符3。输入“12【空格】【空格】【空格】13”,第一次循环只读取12,指针停在有效字符12的末尾,第二次循环自动开始,忽略空格读取到13,就造成了“1:12”和“2:13”连续出现的情况。

第二点证明如下:

import java.util.Scanner;
public class Main{
	 public static void  main(String[] args){
	 	 Scanner sc=new Scanner(System.in); 
		 sc.next();
		 for(int i=0;i<5;i++) {
			 System.out.println(i);
			 if(sc.nextLine().length()==0) continue;
		 }
	 }
}

结果如下:
在这里插入图片描述

分析说明:
输入“123”后,next()方法的指针停在了有效字符末尾,所以在循环体使用nextLine()时,实际上执行了两次,第一次nextLine()读取了空白字符,continue结束。第二次则重新开始等待输入,所以就出现“0”和"1"连续出现的情况。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值