2017-04-25 1 views
2

기본적으로 원하는 것은 백분율입니다. 따라서 0 %, 1 % 등으로 올라가지만 모두 인쇄하는 대신 % 1 %를 2 %로 바꾸고 싶습니다. 그래서 나는 기본 for 루프를 수행하는 방법을 알고 있지만 \r 또는 \b을 사용하는 방법을 모르겠다. 왜냐하면 내 컴파일러에서 모두 한 줄로 인쇄하기 때문이다.새 행을 인쇄하지 않고 java 콘솔을 업데이트하십시오.

package test; 

public class est 
{ 
    public static void main(String[] args) 
    {  
     for(int i = 0; i <= 100; i++) 
     { 
      System.out.print("\rPercent = " + i + "%"); 
     } 
    } 
} 

출력 :

Percent = 0% 
Percent = 1% 

...

Percent = 99% 
Percent = 100% 

그래서 그것은 100 개 라인을 인쇄; 하지만 나는 한 줄에 그 정보 만 원한다.

+0

\ r 작동해야하지만 일부 터미널에서는 지원하지 않습니다. – arataj

+0

https://sourceforge.net/projects/javacurses/ –

+2

또는 https://stackoverflow.com/questions/439799/whats-a-good-java-curses-like-library-for-terminal-applications –

답변

2

간단히 대답하면 System.out은 "향상된 사용자 경험"을 제공하기 위해 노력할 때 적절한 근거가 아닙니다. 어쩌면이 경우에 같은 줄에 을 삭제하려면 \을 사용할 수 있습니다. 그러나 당신이 필요로하거나/문맥이 고쳐지는 println()를하고자 할하자마자; 더 이상 변경할 수 없습니다.

심지어 "돌아 가기"및 정보 지우기는 각 플랫폼에서 작동하는 방식으로 수행 될 수 없습니다.

  • 단순히 그것을 받아 들일 :

    당신은 세 가지 옵션이 있습니다. 현실 세계에서 명령 행 출력은 종종 못 생기고 대부분의 사람들은이를 받아들입니다.

  • "curses"기반 라이브러리를 조사하십시오.이 라이브러리는 "커서"를 "배치"하고 "재설정"할 수 있습니다. 하지만 실제로 플랫폼이 라이브러리와 어떻게 독립적인지는 말할 수 없습니다.
  • 전체 9 야드 아래로 내려 가서 실제 가이드를 만드는 것을 고려해보십시오. 그러나 물론, 그것은 당신의 문제에 대한 가장 비싼 해결책입니다.
+0

_System.out은 "향상된 사용자 환경"을 제공하기 위해 노력할 때 적절한 근거가되지 않습니다 _ ... 적절한 근거가 있습니까? – CodingNinja

+0

콘솔을 업데이트하거나 콘솔에서 텍스트를 바꿀 수 없습니까? – CodingNinja

+0

죄송합니다. 내가 말한 것에 혼란 스러웠습니다. 나는 그것을 다시 업 그레 이드하려고했지만, 새로운 질문으로 옆 걸음질을했다. 나는 지금 막 upvoted. : D – CodingNinja

1

sysout에서 '\ r'을 사용하려고했는데 Intellij Idea 콘솔 &에서 mac osx의 터미널에서 실행되었습니다.

public static void main(String[] a) throws InterruptedException { 
    int progress = 10; 
    for(progress = 10; progress<=100; progress+=10) { 
     System.out.print("\rPercent = " + (progress) + "%"); 
     Thread.sleep(3000); 
    } 
} 

시도해 볼 수 있습니다. 그러나 나는 그것이 기본 콘솔과 OS에 의존 할 것이라고 강력히 믿습니다.

+0

이 스크립트를 실행하려고 시도했을 때 일식에서 작동하지 않았다. 개별 행을 인쇄했다. 그러나, 터미널에서 실행했을 때, 그것은 훌륭하게 작동했습니다.좋은 작업. – CodingNinja

관련 문제