在Java6中,Scanner.nextLine()需要双输入才能完成一行

在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) {

在使用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) 
        { 
                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:只是一个猜测:有人正在开发一些旧的遗留应用程序。可怜的家伙…在这一点上,这是超越遗产真的哈哈