인프런 커뮤니티 질문&답변

subiru5님의 프로필 이미지
subiru5

작성한 질문수

나도코딩의 자바 기본편 - 풀코스 (20시간)

HashMap 내 \t 출력에 문제가 있습니다.

작성

·

167

0

안녕하세요, 해시맵 부분 수강하던 중 강사님과 다르게 출력되는 부분이 있어 문의드립니다.

아래 코드를 출력한 결과 제 화면에서는 \t 만큼 띄워지지 않고, key와 포인트 부분이 한 칸(스페이스바 하나)만 띄워서 출력됩니다. 강사님이 올려주신 파일로 실행을 해도 문제가 해결되지 않습니다.

일반 sout 문에서는 문제없이 \t를 사용할 수 있는데, 아래 코드에서만 제대로 출력되지 않는 것 같습니다.

읽어주셔서 감사합니다.

        // Key & Value 함께 확인
        for (String key : map.keySet()) {
            System.out.println("고객 이름 : " + key + "\t포인트 : " + map.get(key));
        }
        System.out.println("------------------------");

답변 1

0

나도코딩님의 프로필 이미지
나도코딩
지식공유자

안녕하세요?
학습하시는 환경이 Mac 이신가요?
지금 답변을 작성하고 있는 윈도우 PC 환경 기준으로 설명을 드리면, 키보드에서 탭을 입력했을 때 현재 커서 위치로부터 4칸을 띄우는 것은 아니고 앞의 문자들을 포함하여 4칸의 공간 내에서 띄어쓰기 처리가 됩니다.
탭 동작에 대한 이해를 돕기 위해 아래와 같이 코드를 작성해봤어요.

System.out.println("\t9");
System.out.println("1\t9");
System.out.println("12\t9");
System.out.println("123\t9");
System.out.println("1234\t9");
System.out.println("12345\t9");
System.out.println("123456\t9");
System.out.println("1234567\t9");
System.out.println("12345678\t9");

이를 실행해보면 결과는 이렇습니다.
(※ PC 에서 입력하는 탭은 8칸인데 IntelliJ 에서는 기본 4칸으로 처리되고 있어서 텍스트가 아닌 이미지로 가져왔습니다)
image
(1번째 문장) : ....9
4칸을 띄운 뒤에 9를 적습니다.

(2번째 문장) : 1...9
4칸 중에서 1이 차지하고 있는 1칸을 제외한 나머지 3칸을 띄운 뒤에 9를 적습니다.

(3번째 문장) : 12..9
4칸 중에서 12가 차지하고 있는 2칸을 제외한 나머지 2칸을 띄운 뒤에 9를 적습니다.

(4번째 문장) : 123.9
4칸 중에서 123이 차지하고 있는 3칸을 제외한 나머지 1칸을 띄운 뒤에 9를 적습니다.

(5번째 문장) : 1234....9
앞의 4칸은 이미 1234 가 차지하고 있으므로, 그 이후부터 시작되는 새로운 4칸을 띄운 뒤에 9를 적습니다.

(6번째 문장) : 12345...9
앞의 4칸은 이미 1234 가 차지하고 있으므로, 그 이후부터 시작되는 새로운 4칸 중에서 1이 차지하고 있는 1칸을 제외한 나머지 3칸을 띄운 뒤에 9를 적습니다.

...

이후 과정도 동일한 형태로 진행됩니다.

만약 Mac 에서 학습하고 계시다면 한글을 표현하는 데 일부 차이가 있을 수 있습니다. 탭의 동작을 올바로 확인하기 위해서는 아래와 같이 '포인트' 글자 앞에 \t 를 하나 더 붙여서 \t\t 로 변경 후 실행해보시면 뚜렷한 차이를 확인하실 수 있을거예요 😊

// Key & Value 함께 확인
for (String key : map.keySet()) {
    System.out.println("고객 이름 : " + key + "\t\t포인트 : " + map.get(key));
}
System.out.println("------------------------");

감사합니다.

subiru5님의 프로필 이미지
subiru5

작성한 질문수

질문하기