我使用java进行一些cp,今天我看到了一个无法解释的行为。
我有一些解算器类将列表返回到我的主方法。主要方法看起来像这样:
public static void main(String[] args) throws IOException {
FastScanner in = new FastScanner(new BufferedReader(new FileReader("resources/Cp/.../sample.txt")));
// FastScanner in = new FastScanner(new BufferedReader(new FileReader("resources/Cp/.../debug.txt")));
// FastScanner in = new FastScanner(new BufferedReader(new InputStreamReader(System.in)));
var writer = new PrintWriter(System.out);
long numberOfTestcases = Integer.valueOf(in.readLine());
for (int j = 1; j <= numberOfTestcases; j++) {
final var sol = solve(in, j);
String s = sol.toString();
writer.println("Case #" + j + ": " + (sol
.stream()
.map(Vector2d::getX)
.mapToInt(Double::intValue)
.distinct()
.sorted()
.mapToObj(Objects::toString)
.collect(Collectors.joining(" "))
));
in.readLine();
}
writer.close();
}
我注意到(懒惰的)编写器对于解决的问题给出了错误的结果,如果并且仅当我事先没有读取变量时。在写入程序之前添加此字符串s行将更改写入程序从中打印的结果
Case #4: 10
Case #5: 5
Case #6: 3 4
到
Case #4: 10
Case #5: 9
Case #6: 3 4
所以我的问题是:我本以为读操作不会以任何方式改变状态。
关于缓存一致性是否有可能触发不同的行为?可能与流api有关?
暂无答案!
目前还没有任何答案,快来回答吧!