2017-10-15 2 views
1

터미널에서 사용자의 입력을받은 후 어떻게 라인을 다시 인쇄 하시겠습니까?입력을받은 후 라인을 다시 인쇄하십시오.

은 당신이 사용하는 선을 다시 인쇄 할 수 실현 :

출력 생성합니다
System.out.print("\r foo"); 
System.out.print("\r bar"); 

:

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

여기의 키는 "원시"대 "익숙한"입력 모드 일 가능성이 큽니다. 원하는 것을하기 위해 입력 된대로 각 문자를 수집하는 곳에서 "원시"모드를 사용해야하고, 콘솔에 반향 여부를 포함하여 어떻게 처리할지 결정해야합니다.

조리 모드는 간단한 명령 줄 프로그램 입력에 더 일반적이며 기본적으로 "한 번에 한 줄씩 사용자의 입력 내용을 입력하십시오"라는 의미입니다. 그리고 "한 번에 한 줄"은 일반적으로 "사용자가 입력을 누르면"으로 해석됩니다. 대부분의 "조리 된"구현은 키보드 입력을 콘솔에 에코합니다.

여러 가지 이유로 인해 CLI 프로그램에서 "원시"모드를 수행하는 것은 어렵지 않습니다. 어렵지는 않지만 어렵습니다. 나는 (많다 쉬운 사본에 자신을 빌려 여기에 붙여 넣기하지 않음)이 장소의 세부 사항을 절약하고, 대신 같은 시도 할 때 내가 몇 년 전에 사용 된 자원을 가리 킵니다 :

Non blocking console input in Python and Java

A quick hunteke 요약 : 터미널/콘솔은 프로그램뿐만 아니라 상태를 변경해야하며 그렇게하기위한 이식성 방법이 없습니다. 다른 도서관이나 프로그램에 아웃소싱하여 원하는 것을 할 수 있습니다. 프로그램을 종료하거나 사용자가 만족하지 않을 때 실행 취소하는 것을 잊지 마십시오!