一、含义不同:
next碰到空格或者任意空字符就算结束,而nextLine全部识别。
二、使用不同:
用next,第一次取的是abc,第二次取的是def,第三次取的是ghij
用nextLine,第一次取的是abc def ghij,第二次取的是kl mno pqr st,第三次取的是uvw xyz,前一个是以回车或空格为分隔符,一次取一个单词,后一个是以回车为分隔符,一次取一行。
init()
}//初始化!
privatestaticvoidinit()
{
System.out.println("next演示")
Scannersc=newScanner(System.in)
Stringa=sc.next()
Scannerss=newScanner(System.in)
Stringb=ss.nextLine()
标志
+Folder 指定包含您想显示的消息的文件夹。
-header 显示已显示消息的一行描述。该描述包含文件夹名称和消息号。这是缺省值。
-help 列出命令语法、可用的切换和版本信息。
注:对于 MH,必须全部拼出该标志的名称。
-noheader 防止显示每条已显示消息的一行描述。
以上内容参考:百度百科-next
in.nextLine()返回的是一个长度为0的空字符串:可以在input = in.nextLine()后加
System.out.prinln("前"+input+"后,字符长度="+input.length())
你就能看到
next()要得到有效标记才能返回值,而nextLine()则不管这个,只要有当前行就能返回,当前行的剩余字符是0个照样返回。
修改方法有两种:
1、在每次in.nextDouble()后加一句in.nextLine()就不会出现这个问题了。
因为nextDouble没有义务处理换行,要用nextLine来处理换行,这样后面的input = in.nextLine()时没有新行,就会等待输入。
2、把while判断改为while(!input.equals("Y"))或者while (input.equals("N")&&(input.length()!=0))