繁体   English   中英

Java:遇到扫描器的最后一行时,会突破while循环

[英]Java: breaking out of while loop when encountering last line of scanner

我有以下代码:

int ctr4 = 0;
int start3 = 0;

for(int system = 0; system < countsystems(args[0]); system++) {
    Scanner input2 = new Scanner(new File("internal2"));

    for(int r = 0; r < start3; r++){
        input2.nextLine();
    }

    Scanner input9t = new Scanner("");
    String scanstringadd = "";
    while (input9.hasNextLine()) {

        String scanstring = input9.nextLine();
        if(scanstring.isEmpty()) {
            break;
        }
        String scanstringprev = scanstring;
        scanstringadd += scanstring;
        System.out.println("scanstringadd:" + scanstringadd);
        input9t = new Scanner(scanstringadd);
    }

    start3 += (narray[ctr4] + 1);
    ctr4++;
}

如何检查input9的最后一行? 如果识别出最后一行,则while循环必须中断。

编辑:调用while循环的目的是我有一个像这样的输入文件:

(<E>,<A#>,A#),(A#,B#,C#),(B#,B#,C#),(Bb,Bb,Cb)|(Ab,Ab,Ab),(Bb,Bb,Cb),(Bb,Bb,Cb),(Bb,Bb,Cb)|
(   ,    ,  ),(  ,  ,  ),(  ,  ,  ),(  ,  ,  )|(  ,  ,  ),(  ,  ,  ),(  ,  ,  ),(  ,  ,  )|
(   ,    ,  ),(  ,  ,  ),(  ,  ,  ),(  ,  ,  )|(  ,  ,  ),(  ,  ,  ),(  ,  ,  ),(  ,  ,  )|
( A#,<A#>,  ),(  ,B#,  ),(B#,B#,C#),(Bb,Bb,Cb)|(Ab,Ab,Ab),(Bb,Bb,Cb),(Bb,Bb,Cb),(Bb,Bb,Cb)|
(   ,    ,  ),(  ,  ,  ),(  ,  ,  ),(  ,  ,  )|(  ,  ,  ),(  ,  ,  ),(  ,  ,  ),(  ,  ,  )|
( Ab,<Ab>,  ),(  ,Bb,  ),(Bb,Bb,Cb),(Bb,Bb,Cb)|(Ab,Ab,Ab),(Bb,Bb,Cb),(Bb,Bb,Cb),(Bb,Bb,Cb)|

(<D>,<A#>,A#),(A#,B#,C#),(B#,B#,C#),(Bb,Bb,Cb)|(Ab,Ab,Ab),(Bb,Bb,Cb),(Bb,Bb,Cb),(Bb,Bb,Cb)|
(   ,    ,  ),(  ,  ,  ),(  ,  ,  ),(  ,  ,  )|(  ,  ,  ),(  ,  ,  ),(  ,  ,  ),(  ,  ,  )|
(   ,    ,  ),(  ,  ,  ),(  ,  ,  ),(  ,  ,  )|(  ,  ,  ),(  ,  ,  ),(  ,  ,  ),(  ,  ,  )|
( A#,<A#>,  ),(  ,B#,  ),(B#,B#,C#),(Bb,Bb,Cb)|(Ab,Ab,Ab),(Bb,Bb,Cb),(Bb,Bb,Cb),(Bb,Bb,Cb)|

因此,必须先读入第二个“系统”。

读完最后一行时,while循环将自动退出,因为将不再有行要读取。 input9.hasNextLine()将为false

附带说明一下,养成使用StringBuilder的习惯,而不是像这样串联字符串: scanstringadd += scanstring;

这不利于性能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM