java中的next()和nextLine()还是有很大区别的。
next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。完整标记的前后是与分隔模式匹配的输入信息所以next()不能得到带空格的字符串,儿nextLine()是遇到回车是才结束,所以可以得到带空格的字符串
在输入一个int类型的数字之后,如果后边采用nextLine的话,最后打印结果发现会少一个字符,原因是在你使用nextInt的时候后边有一个换行符,没有接受,前边的int变量只是接受了你输入的数值,所以在你继续输入nextLine之后,会自动读取还未读取的换行,所以会导致后边的结果有一列为空,所以此时你需要多输入一个NextLine把未接受的换行符接收到,例如,以下代码:
import java.util.Scanner;
/**
* @Author: Stephen
* @Date: 2020/3/21 13:24
* @Content: 计算字符串最后一个单词的长度,单词以空格隔开。
*/
public class Mydemo {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNext()){
String[] str = input.nextLine().split(" ",-1);
System.out.println(str[str.length-1].length());
}
}
}
// 输出结果如下
hello world
5
public class Mydemo {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNext()){
String[] str = input.next().split(" ",-1);
System.out.println(str[str.length-1].length());
}
}
}
// 输出结果如下
hello world
5
5