Scanner类中next()和nextLine()方法连用时注意事项

    昨天在练习关于String的练习时,输入以下代码:

public class Practise {

    public static void main(String[] args){

        Scanner sc=new Scanner(System.in);

 

        System.out.print("请输入字符串:");

        String str=sc.next();

 

        System.out.println("请输入子字符串:");

        String substr=sc.nextLine();

    }

  运行结果如下:

run:
请输入字符串:gugua gu
请输入子字符串:
成功生成(总时间:9 秒)
提示我输入第一个以后,第二个就没有提示,直接输出结果,那么这是为什么呢?

个人解析如下:

1.next()和nextLine()方法的表象区别是前者读取的是“一段”字符串,而nextLine读取的是一行字符串。

2.next从一行中读取字符串,当遇到特定的标识符:空格或者换行符(/n),获取其当前的字符串(如果你想把空格要当作输入的字符串,那么必须用nextLine()方法,我同学就遇到这样的问题,结果输入的字符串到空格就结束)。

3.nextLine()方法则直到遇到换行符(/n)才会结束。

分析结果:在上面的输入中gugua遇到空格符,next()方法实际上就已经结束,然后它就把换行符(/n)丢给nextLine去处理。

总结:在需要提示输入的方法中,尽量少用next()方法,多用nextLine()方法

posted @ 2010-10-16 15:34  顾光菊  阅读(937)  评论(0)    收藏  举报