4

以下は私が問題を抱えているコードです:

public class testOutput {

    public static void main(String[] args) throws Exception {

        int count = 50000;
        String s = "Vinjith";

        for(int i=0;i<count;i++) {
            System.out.print(s);  // change this to println(s); and it works! 
            System.out.flush();
        }
    }

}

Eclipse Galileo - jdk 1.6/jre6 を使用しています。

  • コンソール出力に制限を設定していません。
  • 私も BufferedWriter で同じプログラムを試しました: 動作しません
  • 変数count = 584;がそれ以下の場合に機能します。
  • System.out.print(s); を使用しても出力が得られません。しかし、System.out.println(s); を使用すると 文字列「Vinjith」の 50000 行を取得します。

ありがとう。

4

3 に答える 3

2

これは、Eclipse がコンソールでサポートしていない同じ行に文字が多すぎるためです (コンソールには何も表示されません)。コマンドラインで同じコードを試すと、うまくいくはずです。

于 2013-03-04T15:11:56.497 に答える
1

これは、Eclipse コンソールで印刷している文字の長さが制限を超えているためです。

これを試して、印刷されるかどうかを確認してください。

System.out.print(s);  // change this to println(s); and it works!
System.out.println();
System.out.flush();

また、制限の問題に関しては、これを試してみてください。プリファレンス -> 実行/デバッグ -> コンソールには、Fixed Width Consoleというチェックボックスがあります。その上限は1000です。1000それを作成して、以下のように元のコードを実行してみてください。いくつかの文字を出力し、残りの文字をスローすることがわかりますInternal Error

System.out.print(s);  // change this to println(s); and it works!
System.out.flush();
于 2013-03-04T15:21:32.847 に答える
0

これを試しましたか:

    for(int i=0;i<count;i++) {
        System.out.print(s);  // change this to println(s); and it works! 
    }
    System.out.println("---done");
    System.out.flush();

count の値 (100、500、1000、2000、10000 など) を試すとどうなりますか?

それが機能するときの出力と「カウント」とは何かを投稿してください。

以前に問題を調べたflush()ことがありますが、それは OS が内部的にバッファを処理する方法に帰着します。ほとんどの JRE はインターフェイスを定義するだけで、OS に依存して実際の動作を実装します。場合によっては、おかしなことになります。 同様の質問に対する私の回答を参照してください。

于 2013-03-04T15:11:37.500 に答える