0

我需要解决这样的任务:

  1. 随机生成数组的长度 -将此 int 作为第一个数字保存到文件 ("input.txt)" 中
  2. 随机生成数组元素 -将每个元素保存到文件中(“input.txt”)

但是数组元素不会保存到文件中。

正如我从控制台数组中看到的那样,有数字,但它们不保存到文件中。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) throws IOException {
    new Main().run();

    }

    Random rand;
    Scanner sc;
    PrintWriter pr, pr2;

    public void run() throws FileNotFoundException {
    pr2 = new PrintWriter(new File("input.txt"));
    pr = new PrintWriter(new File("output.txt"));
    rand = new Random();

    int a = rand.nextInt((int) Math.pow(10, 3));
    System.out.println(a);
    pr2.print(a);
    pr2.close();
    sc = new Scanner(new File("input.txt"));

    int[] arr = new int[a];

    for (int i = 0; i < arr.length; i++) {
        arr[i] = rand.nextInt((int) Math.pow(10, 3));

    }
    for (int i = 0; i < arr.length; i++) {
        System.out.println("" + i + ": " + arr[i]);
        pr2.print(arr[i]);

    }

    pr2.close();
    return;
    }

}
4

2 回答 2

1

您正在关闭流,pr2.close();然后尝试通过它打印一些东西。然后你再次关闭它。删除第一个pr2.close();它应该一切正常。此外,您还有不必要的 Scanner 对象和第二个 PrintWriter。

于 2013-05-06T20:27:50.637 回答
1

您的问题是您在pr2.close()写入数组的长度后立即调用。一旦关闭PrintWriter,它将不再允许将任何内容写入文件;因此,当您稍后尝试将数组中的值写入 时pr2,会pr2说:“天哪,我知道这家伙想让我写点东西,但我已经关门了,我做不到!” 所以什么都没有写。

工作原理是将PrintWriter所有的write(...)和调用存储到内存中,然后在调用or方法print(...)时将它们实际写入文本文件。虽然没有必要,但如果您希望与当前第一次调用的使用功能相似,您可以使用,但请确保在完全使用完后调用(否则您只是要求内存泄漏) .close()flush()close()flush()close()Scanner

于 2013-05-06T20:39:28.990 回答