1 回答
TA贡献1817条经验 获得超6个赞
要记住的主要编程规则之一:保持简单
在这一点上,为什么不简单地使用一个普通的扫描仪,一个没有改变分隔符的扫描仪,并使用它来获取文件中的行和行。然后,您可以根据需要处理行,例如转换为字符数组,或者在需要时使用自己的行扫描仪解析它。
List<String> lines = new ArrayList<>();
while (sc.hasNextLine()) {
lines.add(sc.nextLine());
}
array2 = new char[lines.size()][];
for (int i = 0; i < array2.length; i++) {
array2[i] = lines.get(i).toCharArray();
}
例如:
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Formatter;
import java.util.List;
import java.util.Scanner;
public class DoWork2 {
// assuming data in data.txt file in same path as class files
private static final String RESRC_PATH = "data.txt";
private char[][] array2;
public DoWork2(String resrcPath) {
InputStream is = getClass().getResourceAsStream(resrcPath);
Scanner sc = new Scanner(is);
List<String> lines = new ArrayList<>();
while (sc.hasNextLine()) {
lines.add(sc.nextLine());
}
array2 = new char[lines.size()][];
for (int i = 0; i < array2.length; i++) {
array2[i] = lines.get(i).toCharArray();
}
if (sc != null) {
sc.close();
}
}
public String getLines2() {
StringBuilder sb = new StringBuilder();
Formatter formatter = new Formatter(sb);
for (char[] cs : array2) {
formatter.format("%s%n", new String(cs));
}
formatter.close();
return sb.toString();
}
public static void main(String[] args) {
DoWork2 doWork2 = new DoWork2(RESRC_PATH);
System.out.println(doWork2.getLines2());
}
}
添加回答
举报