在Java6中,Scanner.nextLine()需要双输入才能完成一行
在使用Scanner.nextLine()时,我在Java6中遇到了问题。 代码如下所示在Java6中,Scanner.nextLine()需要双输入才能完成一行,java,java-6,java-5,Java,Java 6,Java 5,在使用Scanner.nextLine()时,我在Java6中遇到了问题。 代码如下所示 package test; import java.io.InputStreamReader; import java.io.Reader; import java.util.Scanner; public class TestScanner { public static void main(String[] args) {
package test;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Scanner;
public class TestScanner
{
public static void main(String[] args)
{
Reader in = new InputStreamReader(System.in);
Scanner input = new Scanner(in);
while (true)
{
String line = input.nextLine();
if ("exit".equals(line))
{
break;
}
else
{
System.out.println(">>" + line);
}
}
}
}
在Java6中,我需要输入两次来完成这一行,然后输出“>>XXX”,如
输入:
abc
(first ENTER here)
(second ENTER here)
abc
(首先在此处输入)
(第二个输入)
输出:
>>abc
>>abc
JVM信息如下:
java version "1.6.0"
Java(TM) SE Runtime Environment (build pap3260sr16fp41-20170215_04(SR16 FP41))
IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 AIX ppc-32 jvmap3260sr16fp40-20161215_329869 (JIT enabled, AOT enabled)
J9VM - 20161215_329869
JIT - r9_20160630_120368
GC - GA24_Java6_SR16_20161215_0927_B329869)
JCL - 20170215_01
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build pap64devifx-20151009 (SR16 FP14 ))
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 AIX ppc64-64 j9vmap6423ifx-20150401 (JIT enabled)
J9VM - 20150323_240985_BHdSMr
JIT - 20130920_46470ifx2_r8
GC - 20141118_AA)
JCL - 20151009
java版本“1.6.0”
Java(TM)SE运行时环境(构建pap3260sr16fp41-20170215_04(SR16 FP41))
IBM J9虚拟机(构建2.4,JRE 1.6.0 IBM J9 2.4 AIX ppc-32 jvmap3260sr16fp40-20161215_329869(启用JIT,启用AOT)
J9VM-20161215_329869
JIT-r9_20160630_120368
GC-GA24_Java6_SR16_20161215_0927_B329869)
JCL-20170215_01
另一方面,在Java5中,我运行相同的代码,只需输入一次即可。Java5虚拟机信息如下:
java version "1.6.0"
Java(TM) SE Runtime Environment (build pap3260sr16fp41-20170215_04(SR16 FP41))
IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 AIX ppc-32 jvmap3260sr16fp40-20161215_329869 (JIT enabled, AOT enabled)
J9VM - 20161215_329869
JIT - r9_20160630_120368
GC - GA24_Java6_SR16_20161215_0927_B329869)
JCL - 20170215_01
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build pap64devifx-20151009 (SR16 FP14 ))
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 AIX ppc64-64 j9vmap6423ifx-20150401 (JIT enabled)
J9VM - 20150323_240985_BHdSMr
JIT - 20130920_46470ifx2_r8
GC - 20141118_AA)
JCL - 20151009
java版本“1.5.0”
Java(TM)2运行时环境,标准版(构建pap64devifx-20151009(SR16 FP14))
IBM J9虚拟机(构建2.3,J2RE 1.5.0 IBM J9 2.3 AIX ppc64-64 j9vmap6423ifx-20150401(启用JIT)
J9VM-20150323_240985_BHdSMr
JIT-20130920_46470; ifx2_r8
GC-20141118(美国)
JCL-20151009
此外,我在下面的Java6中做了一些其他输入,发现它不能正确地识别行终止符
abc(input and ENTER)
efg(input and ENTER)
>>abc(got output here)
hij(keep input and ENTER)
>>efg(got output which should output above)
abc(输入和输入)
efg(输入和输入)
>>abc(这里有输出)
hij(保持输入并输入)
>>efg(已获得输出,应在上面输出)
但在Java5中仍然正确,如下所示
abc(input and ENTER)
>>abc(got output)
efg(input and ENTER)
>>efg(got output)
hij(input and ENTER)
>>hij(got output)
abc(输入和输入)
>>abc(获得输出)
efg(输入和输入)
>>efg(获得输出)
hij(输入和输入)
>>hij(获得输出)
有什么区别?我该怎么做才能使它在Java6和Java5中的行为相同呢?虽然比较好,但“Java5”真的是这样吗?当使用
Scanner input=new Scanner(System.in)时,你看到了相同的行为吗代码>?Java5实际上已经13岁了。你到底是怎么使用它的?@TheophileDano:只是一个猜测:有人正在开发一些旧的遗留应用程序。可怜的家伙…在这一点上,这是超越遗产真的哈哈