0

したがって、スクリプトをプログラミングパズルとしてテストし、テストするために、コマンドラインを使用してstd入力と出力を次のようにファイルにポイントしています。

java -jar dist\PairwiseAndSum.jar < in.txt > out.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) {
}

入力ファイルには「5 1 2 3 4 5」が含まれており、正しく読み込まれていますが、out.txt ファイルに出力がありません。「System.out.println(sum);」を入力すると 結果は実際に out.txt に書き込まれます。SO で似たような投稿を見ましたが、問題を理解できませんでした:(。よろしくお願いします。

4

1 に答える 1

1

問題は次の行にあります。

bw.write(sum);

そのwriteメソッドはint引数を取りますが、実際にはchar. したがって、実際にはsumを単一の Unicode コードポイントとして出力しています。Unicode コードポイント15は非表示の ASCII 制御文字であるため、出力ファイルを表示すると、空のように見えます。

その行を次のように変更します。

bw.write(Integer.toString(sum));
bw.newLine();
于 2013-09-08T04:29:14.793 に答える