解析java的Scanner类中next()方法和nextLine()的区别和联系
1.联系
a.都是Scanner类中获取用户键盘输入的数据内容的方法
b.获取的值都是String类型
c.单独使用,可以正常接收用户输入的内容,混合使用会产生问题
2.区别
2.1 next()方法
2.1.1 next()方法的结束标记是什么?
空白符(空格,Tab键什么的),但是需要注意的这里的空白字符需要满足前面紧邻着的内容是非空白符内容
示例代码如下所示
import java.util.Scanner;
public class Practice {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println(".next()方法的结束标记的理解");
System.out.println("请输入你的姓名:");
String name=scanner.next();
System.out.println("输入的内容:"+name);
}
}
运行截图如下所示:
根据示例代码和运行截图可知:并不是一遇到空白符它就会结束,而是先遇到非空白内容后再遇到空白符才会结束的.
2.1.2 接收的内容需要满足哪些条件?
不含空白符的字符串
接收的内容是空白符之前的非空白符内容
2.2 nextLine方法
2.2.1 nextLine()方法的结束标记是什么?
回车符即为键盘上的enter键,
示例代码如下所示
import java.util.Scanner;
public class Practice {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println(".nextLine()方法的结束标记的理解");
System.out.println("请输入你的姓名:");
String name=scanner.nextLine();
System.out.println("输入的内容:"+name);
}
}
运行截图如下所示:
根据示例代码和运行截图可知:遇到回车键之后才会结束,回车键之前的内容都会被当成字符串进行接收。
2.2.2 接收的内容需要满足哪些条件?
条件:任意不含回车符的字符串
接收的内容是回车符之前的内容
2.3 .next()方法和.nextLine()方法可以混用吗?
可以,但是需要消除回车符的影响,因为.next()方法以空白符为结束字符
因而无法消除空白符的影响
混用的语法
.next()方法
.nextLine()方法
//这个不用于接收,目的是消除输入时回车符的影响
.nextLine()方法
//这个用于接收输入的第二个输入的数据
示例代码
import java.util.Scanner;
public class Practice {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println(".nextLine()方法的结束标记的理解");
System.out.println("请输入你的姓名:");
String name=scanner.next();
System.out.println("请输入你的性别:");
String temp=scanner.nextLine();
//吸收控制台输入姓名时,所敲的回车符,字符串里面啥都没有代表一个回车字符
String sex=scanner.nextLine();
System.out.println("姓名为:"+name);
System.out.println("性别为:"+sex);
System.out.println("检测是否吸收回车符成功:"+("").equals(temp));
}
}
示例代码运行截图