2

だから私はユーザー入力を取る小さなプログラムを書いています

public class Test {
    public static void main(String[] args) throws IOException {
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        String something = input.readLine();
    }
}

これは関連するセクションの抜粋です。これを実行し、メイン スレッド ブロックを readline() で実行しますが、CPU 使用率は一貫して ~15 ~ 20% です。

ここに何がありますか、コンソールから読み取るより効率的な方法はありますか。

編集: 私は Mac OS 10.8 を使用しており、プロセスは現在 20 分間実行されています。input.readline() ステートメントは while true ループでラップされ、内部で簡単な処理が行われますが、コードがそこに到達していないことはわかっています。

4

1 に答える 1

1

readLine() のステータスをチェックする何らかのコードがあると仮定します。そうしないと、Java はブロックし続けます。

String line = null;
while ((line = br.readLine()) != null) {
    // handle contents of line here
}

Scanner クラスを使用してユーザー入力を読み取ったほうがよい場合があります。

Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
....
于 2013-06-12T19:47:54.050 に答える