我需要阅读scala中的一些大文本文件。然后在该文件中追加一行到StringBuilder
。但是如果该文件中的行包含一些String,我需要中断循环。我不想将该String附加到StringBuilder。例如,在java中,循环A
将在结果字符串中包含"pengkor"
。循环B
不包括该字符串,但在循环中有break
语句,在scala中不可用。在循环C中,我使用了for
语句,但其行为与scala中的for
循环非常不同。我主要关心的是不要在StringBuilder中包含"pengkor"
字符串,也不要将文件的所有内容加载到Scala列表中(因为scala中的列表理解或其他列表操作),因为文件的大小。如何在读取文件时打破scala中的循环?
public class TestDoWhile {
public static void main(String[] args) {
String s[] = {"makin", "manyun", "mama", "mabuk", "pengkor", "subtitle"};
String m = "";
StringBuilder builder = new StringBuilder();
// loop A
int a = 0;
while (!m.equals("pengkor")) {
m = s[a];
builder.append(m);
a++;
}
System.out.println(builder.toString());
// loop B
a = 0;
builder = new StringBuilder();
while (a < s.length) {
m = s[a];
if (!m.equals("pengkor")) {
builder.append(m);
} else {
break;
}
a++;
}
System.out.println(builder.toString());
// loop C
builder = new StringBuilder();
a = 0;
for (m = ""; !m.equals("pengkor"); m = s[a], a++) {
builder.append(m);
}
System.out.println(builder.toString());
}
}
3)使用递归,很像第一种方式 –