JAVA scanner类中next()方法与nextline()方法的区别

来源:互联网 发布:2017淘宝开店成功经验 编辑:程序博客网 时间:2024/05/16 19:13

在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() 与 nextLine() 区别
next():
1. 一定要读取到有效字符后才可以结束输入。
2. 对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
next() 不能得到带有空格的字符串。
nextLine():
1. 以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
2. 可以获得空白。

ps

在编译scannerDemo.java时我加入了 -encoding UTF-8 ,是由于我用的时notepad++编辑器。遇到了如下错误:
使用notepad++编译器时 错误:编码gbk的不可映射字符串
解决办法已经在该博客中写出。

阅读全文
1 0