涉及知识点:
Scanner、next、nextLine、trim
1、next和nextLine的区别
next():该方法读取输入直到遇到第一个空白字符(如空格、制表符或换行符),然后返回一个字符串,该字符串包含从输入中读取的第一个完整单词。如果输入中有多个单词,next()只会返回第一个单词
nextLine():该方法读取整行输入直到遇到换行符就结束,然后返回换行符之前的所有字符。这意味着它可以读取包含空格的完整行文本
2、代码演示
public class TestDemo01 {
public static void main(String[] args) {
//1、定义一个Scanner 输入变量
Scanner scanner = new Scanner(System.in);
System.out.println("演示next方法:");
//2、输入一个String类型的字符串
//注意:遇到空白字符结束输入
// 如:有空格 返回第一个空格之前的内容
String name = scanner.next();
System.out.println(name);
}
}
package com.fhsedu;
import java.util.Scanner;
/**
* @author fhs
* @version 1.0
*/
public class TestDemo01 {
public static void main(String[] args) {
//1、定义一个Scanner 输入变量
Scanner scanner = new Scanner(System.in);
//3、演示nextLine()方法
//注意:当nextLine()遇到 换行符(回车)时
// 输出换行符之前的内容,包含空白字符
System.out.println("演示nextLine方法:");
String name = scanner.nextLine();
System.out.println(name);
}
}
3、出现穿透问题
如果scanner.next()
之后的代码中有scanner.nextLine()
想想会发生什么?
代码演示
public class TestDemo01 {
public static void main(String[] args) {
//1、定义一个Scanner 输入变量
Scanner scanner = new Scanner(System.in);
System.out.println("演示next方法:");
//2、输入一个String类型的字符串
//注意:遇到空白字符结束输入
// 如:有空格 返回第一个空格之前的内容
String name = scanner.next();
System.out.println(name);
//3、演示nextLine()方法
//注意:当nextLine()遇到 换行符(回车)时
// 输出换行符之前的内容,包含空白字符
System.out.println("演示nextLine方法:");
name = scanner.nextLine();
System.out.println(name);
}
}
3.1、图解
1 next
执行完毕
2.nextLine()
自动执行
3.2、解决方法
解决nextLine()自动换行问题
nextLine():在读取完一个nextInt()或nextDouble()等后,可能会留下一个换行符在输入缓冲区。这会导致接下来的nextLine()调用似乎没有执行,因为换行符已经被读取。解决这个问题的方法是在调用nextInt()或nextDouble()后立即调用一次nextLine()来“吃掉”剩余的换行符
public class TestDemo01 {
public static void main(String[] args) {
//1、定义一个Scanner 输入变量
Scanner scanner = new Scanner(System.in);
System.out.println("演示next方法:");
//2、输入一个String类型的字符串
//注意:遇到空白字符结束输入
// 如:有空格 返回第一个空格之前的内容
String name = scanner.next();
System.out.println(name);
//"吃掉" 第一个输入的换行符
name = scanner.nextLine();
//3、演示nextLine()方法
//注意:当nextLine()遇到 换行符(回车)时
// 输出换行符之前的内容,包含空白字符
System.out.println("演示nextLine方法:");
name = scanner.nextLine();
System.out.println(name);
}
}
4、trim的使用
trim()
只会去除字符串两端的空白字符,字符串中间的空白字符不会被移除 。例如,字符串" a b c “,调用trim()后结果是"a b c”,前后两个空白字符消失,中间空白字符存在。
代码演示