在scanner类中有next()和nextline()方法,这两种方法有什么区别呢?今天写了段代码测试了下。
代码部分
import java.util.Scanner;
public class scannerDemo{
public static void main(String[] args) {
nextTest();
System.out.println("\n");
nextLineTest();
}
public static void nextTest(){
//从键盘接受数据
Scanner scan = new Scanner(System.in);
//next方式接收字符串
System.out.println("next方式接受:");
//判断是否还有输入
if(scan.hasNext()){
String str1 = scan.next();
System.out.println("输入的数据为:"+str1);
}
}
public static void nextLineTest(){
//从键盘接收数据
Scanner scan = new Scanner(System.in);
//nextLine方式接收字符串
System.out.println("nextLine方式接受:");
//判断是否还有输入
if(scan.hasNextLine()){
String str2 = scan.nextLine();
System.out.println("输入的数据为:"+str2);
}
}
}
运行结果
总结
next() 与 nextLine() 区别
next():
1. 一定要读取到有效字符后才可以结束输入。
2. 对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
next() 不能得到带有空格的字符串。
nextLine():
1. 以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
2. 可以获得空白。
ps
在编译scannerDemo.java时我加入了 -encoding UTF-8 ,是由于我用的时notepad++编辑器。遇到了如下错误:
使用notepad++编译器时 错误:编码gbk的不可映射字符串
解决办法已经在该博客中写出。