Java BufferedWriter通过命令行未写入文件

Java BufferedWriter通过命令行未写入文件,java,file-io,command-line,bufferedwriter,Java,File Io,Command Line,Bufferedwriter,因此,我尝试将我的脚本作为一个编程难题进行测试,并使用命令行将std输入和输出指向以下文件: java-jar dist\PairwiseAndSum.jarout.txt 代码如下: Scanner sc = new Scanner(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); try { int n = sc

因此,我尝试将我的脚本作为一个编程难题进行测试,并使用命令行将std输入和输出指向以下文件:

java-jar dist\PairwiseAndSum.jarout.txt

代码如下:

Scanner sc = new Scanner(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

try {
    int n = sc.nextInt();
    short a[] = new short[n];
    int sum = 0;
    for (int i = 0; i < n; i++) {
        a[i] = sc.nextShort();
    }
    for (int i = 0; i < n - 1; i++) {
        for (int j = i + 1; j < n; j++) {
            sum += a[i] & a[j];
        }
    }

    bw.write(sum);
    bw.flush();
    bw.close();
} catch (IOException e) {
}
Scanner sc=新的扫描仪(新的InputStreamReader(System.in));
BufferedWriter bw=新的BufferedWriter(新的OutputStreamWriter(System.out));
试一试{
int n=sc.nextInt();
短a[]=新短[n];
整数和=0;
对于(int i=0;i
输入文件包含“5 1 2 3 4 5”,正在正确加载,但out.txt文件没有输出。 现在,如果我输入“System.out.println(sum);”,结果将实际写入out.txt。 我在SO这里看到了simular帖子,但没有理解这个问题:(。
提前感谢。

这一行有问题:

bw.write(sum);
write
方法接受一个
int
参数,但实际上写出了一个
char
。因此,实际上是将
和作为单个Unicode代码点输出。Unicode代码点
15
是一个非打印ASCII控制字符,因此当您查看输出文件时,它看起来像是空的

将该行更改为:

bw.write(Integer.toString(sum));
bw.newLine();