java在通过流打印时的意外行为

czfnxgou  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(256)

我使用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有关?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题