2014-01-24 6 views
3

CMD/콘솔에서 색상을 사용하기 위해 Jansi Java 라이브러리를 사용하려고하는데 약간의 문제가 있습니다. Jansi 라이브러리를 사용하여 print f 문을 사용할 때왜 printf 명령문의 끝에서 ">>"인쇄를하지 않습니까?

System.out.printf("Hello young lad! What is thy " + RED + "name " + WHITE + "you were given at birth?\n>> "); 

">>"는 끝에 인쇄되지 않습니다. 대신 스캐너가 호출되어 입력을 요청합니다. 왜 이것이 발생하고 ">>"및 스캐너 입력이 한 줄에 나타나도록 할 수있는 방법이 있습니까?

import java.util.Scanner; 

import org.fusesource.jansi.AnsiConsole; 


public class Test { 
    public static void main(String[] args) { 
     AnsiConsole.systemInstall(); 

     String name; 
     Scanner scanner = new Scanner(System.in); 

     String BLACK = "\u001B[0;30m"; 
     String RED = "\u001B[0;31m"; 
     String GREEN = "\u001B[0;32m"; 
     String YELLOW = "\u001B[0;33m"; 
     String BLUE = "\u001B[0;34m"; 
     String MAGENTA = "\u001B[0;35m"; 
     String CYAN = "\u001B[0;36m"; 
     String WHITE = "\u001B[0;37m"; 

     System.out.printf("Hello young lad! What is thy " + RED + "name " + WHITE + "you were given at birth?\n>> "); 
     name = scanner.nextLine(); 
    } 
} 
+2

'nextLine()'을 (를) 호출하기 전에'System.out.flush();'을 추가하십시오. – chrylis

+0

AnsiConsole 물건을 무시하고, 그것은 나를 위해 작동합니다. 귀하의 시스템이 내게 버퍼 버퍼링 된 것처럼 보입니다. – tommyo

+2

당신은'printf'를 호출 중입니다 만, 어떤 기능도 사용하지 않습니다. 'printf'에 대해 모른다면'print'를 사용하십시오. –

답변

1

이 코드는 AnsiConsole 항목을 주석 처리 한 후에 정상적으로 작동합니다.

이것이 출력됩니다.

Hello young lad! What is thy [0;31mname [0;37myou were given at birth? 
>> John 
+0

문제가 Jansi의 콘솔과 관련된 경우 어떻게합니까? – zakinster

+0

@zakinster 그러면 jAnsi의 ANSI 콘솔과 관련이 있습니다. –