2017-10-15 9 views
1

ユーザからの入力(端末からの)を受けた後、どのように行を再印刷しますか?入力を受けた後の行の再印刷

私はあなたが使用して行を再印刷できることを実現:

bar 

いますが、ユーザからの入力を取ると、これはしていないよう:出力を生成します

System.out.print("\r foo"); 
System.out.print("\r bar"); 

を作業。例えば:

System.out.print("\r foo"); 
Scanner sc = new Scanner(System.in); 
int i = sc.nextInt(); 
System.out.print("\r bar"); 

あなたが入力として1を入力すると、あなたが得る:

foo1 
bar 

あなたは(より具体的にまたは、foo1の)FOOと同じ行に再印刷することができ、ユーザが提供した後入力?

+1

さて、あなたはもうその行にはいないので、 '\ r'はどこにもあなたをもたらしません。 – shmosel

答えて

0

ここでのキーは、「生の」対「調理済み」の入力モードです。あなたが望むことをするためには、入力時に各文字を収集し、それをコンソールにエコーするかどうかなど、何をするかを決める「生」モードを使用する必要があります。

Cookedモードは、単純なコマンドラインプログラム入力の方が一般的で、基本的には「一度に1行ずつユーザーの入力を教えてください」という意味です。また、「一度に1行」とは、一般に「ユーザーが入力を押したとき」と解釈されます。ほとんどの "cooked"実装は、キーボード入力をコンソールにエコーします。

さまざまな理由から、CLIプログラムで「未処理」モードを実行することは、不可能ではなく困難です。私は(多く、簡単にコピーに自分自身を貸すと、ここで貼り付けられません)この会場で詳細を惜しま、代わりに同じことをしようとしたとき、私は数年前に使用されたリソースにあなたを指します:

Non blocking console input in Python and Java

A quick hunteke要約:端末/コンソールはプログラムだけでなく状態を変更する必要があり、そのための移植可能な方法はありません。あなたは、あなたが望むことをするために他の図書館やプログラムにアウトソーシングすることになります。あなたのプログラムが終了したときに元に戻すことを忘れないでください。

関連する問題