【发布时间】:2021-07-06 23:02:18
【问题描述】:
我有一种将 .txt 文件读入二维数组的方法,该 txt 文件包含带有“Y”或“N”的行以及 1-24 之间的团队编号(行看起来像“T# Y”或“ T# N”,然后我在该二维数组中搜索行中的特定元素(“Y”)并返回有多少行有“Y”,并为每个团队计算真实案例的数量。
24 个团队,我认为至少应该是 2d 数组中的 24 行!
public static String[][] buildTimes(String[][] sub) {
StringBuilder scores = new StringBuilder(sub.length);
for (String[] row : sub) {
scores.append(Arrays.stream(row)
.filter(str -> str.equalsIgnoreCase("Y"))
.toArray().length);
scores.append("/");
}
String[] tempArray = scores.toString().split("");
String[][] finalTimes = new String[24][1];
for (int i = 0; i < finalTimes.length; i++) {
for (int j = 0; j < finalTimes[i].length; j++) {
int index = 0;
finalTimes[i][j] = tempArray[index];
index++;
}
}
return finalTimes;
}
我收到错误:
Exception in thread "main" java.lang.NullPointerException
at test.lambda$buildTimes$0(test.java:74)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:550)
at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:517)
at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:523)
at test.buildTimes(test.java:74)
at run.main(run.java:10)
我不知道为什么会出现这些错误,我绝对没有使用 StringBuilders 的经验,我也尝试过使用 INT ArrayList 和相同的错误。
输出示例: Team 1(为 Team1 找到的 Y 计数) 团队 2(“”代表团队 2) 第 3 队(第 3 队的“”)
我只需要一个包含 Team# 的 2D 数组,并且在第 1 列到第 24 列的文件中的行中为每个团队找到“Y”。
【问题讨论】:
标签: java arrays arraylist multidimensional-array stringbuilder