[英]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.