• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

14 출력이 강의와 다릅니다.

24.04.25 19:53 작성 조회수 36

0

%-6d%n은 안나오고 %-6.2s%n은 JaJa로만 나옵니다.

제가 틀리게 입력한건가요?

답변 1

답변을 작성해보세요.

0

안녕하세요?

바로 윗줄에서 %n 을 누락하여 발생한 현상입니다.

System.out.printf("%6.2s", "Java"); // 수정 전
System.out.printf("%6.2s%n", "Java"); // 수정 후

윗줄에서 %n 이 없으니 줄바꿈이 되지 않았으며, 6자리 공간을 확보하고 우측 정렬하여 2글자인 Ja 를 먼저 출력하지요.

(1) _ _ _ _ J a

System.out.printf("%-6.2s%n", "Java");

그런 다음에 이어서 위 코드를 실행하게 되니,

6자리 공간을 확보하고 좌측 정렬하여 2글자인 Ja 를 출력하게 됩니다.

즉 (2) J a _ _ _ _ 가 되겠네요.

그런데 둘 사이에 줄바꿈이 없으므로

(1) _ _ _ _ J a (2) J a _ _ _ _

가 합쳐져서 실제로 보기에는

_ _ _ _ J a J a _ _ _ _

이렇게 보여지게 된 거에요.

보다 더 확실히 차이를 확인하고 싶다면 이렇게 해보시면 되겠네요.

System.out.printf("%6.2s", "ABCD"); // 처음 두 글자 AB
System.out.printf("%-6.2s%n", "EFGH"); // 처음 두 글자 EF 

위 예제에서는 각각 출력 문장이

(1) _ _ _ _ A B

(2) E F _ _ _ _

이렇게 될텐데, %n 에 해당하는 줄바꿈이 없으니 둘이 합쳐져서

_ _ _ _ A B E F _ _ _ _

이렇게 출력이 되겠네요 😊

감사합니다.

덧) 첫 번째 스크린샷 이미지는 코드가 잘려서 정확한 확인은 어렵지만 아마도 동일하게 코드 윗줄에서 %n 을 누락하신 것 같아요 😋