Escape Sequence에서 Tap 결과값에 대해 질문드려요
509
작성한 질문수 1
강의 영상에서는 \t 한번으로 숫자가 정렬된 것을 볼 수 있었습니다.
하지만 제가 작성하였을때는 정렬이 되지 않습니다.
물론 \t을 2번 진행하게 되면 정상적으로 정렬이 되는 것을 볼 수 있습니다.
강사님 처럼 \t 한번으로 정렬하기 위해서는 어떻게 해야하나요?
답변 1
1
※ 본 질문은 아래 링크의 질문과 유사하여 동일한 답변에서 일부 내용을 수정 / 추가하여 제공합니다.
https://www.inflearn.com/questions/785133
안녕하세요?
탭(tab)은 PC마다, 프로그램마다, 터미널마다 설정된 칸의 수가 다를 수 있고 한글 / 영문에 따라서도 각 글자들이 차지하는 크기에 따라 조금씩 다르게 출력될 수 있습니다.
학습하시는 환경이 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칸으로 처리되고 있어서 텍스트가 아닌 이미지로 가져왔습니다)
(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 에서 학습하고 계시다면 한글을 표현하는 데 일부 차이가 있을 수 있습니다.
제가 확인을 위해 아래와 같이 숫자만, 또는 한글과 숫자가 섞인 코드를 적었습니다.

실행 결과는 이렇습니다.

탭이 4칸 간격으로 띄우므로 3번째 줄에서는 8칸인 "12345678" 을 입력한 뒤에 4칸을 띄우고 1234 가 잘 적히는 것을 확인할 수 있는데요. 한글의 경우 "해물파전" 만으로는 8칸인 "12345678" 만큼의 공간을 차지하지 않아서 4번째 줄에서는 "해물파전" 뒤에 커서가 한 칸 들어갈 공간이 생기게 됩니다. 이때 탭을 넣게 되면 커서 한 칸 만큼의 공간만 띄워지고 이어서 1234 가 출력되는 거죠. 만약 "해물파전" 대신 영문으로 된 "abcdefgh" 로 적으면 "12345678"과 동일한 간격으로 출력되는 것을 확인할 수 있습니다.


즉, 한글 처리 과정에서 실행 결과가 조금 달라질 수 있는 것이며 이는 크게 신경쓰지 않으셔도 괜찮은 부분입니다. 참고로 윈도우의 명령 창(cmd) 에서 실행시키는 경우 같은 코드임에도 불구하고 또다른 출력 결과가 나온답니다. 이번에는 한글 하나는 숫자 두개가 차지하는 공간과 완전 일치하며 탭 뒤의 1234 는 동일한 위치에 나오는 걸 알 수 있지요 😊

감사합니다.
자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?
1
146
2
static이 뭐였는지 기억이 안나요 ㅜㅜ
0
119
2
Iterator (알 수 없음) 데이터 삭제 후 초기화 관련 문의
0
72
1
사고력 키우는 법이 어떤게 있나요?
0
94
2
getter setter
0
103
2
섹션9. 66 메소드 오버로딩 시 질문이 있습니다.
0
80
1
안녕하세요 갑자기 프로그램 에러가 떠서 안되네요
0
76
2
변수 이름짓는법
0
114
2
intelli J 실행오류
0
115
2
혹시 이건 수학적 사고가 부족한 걸까요?
0
152
2
영상이 재생이 안됩니다.
0
167
3
이중 반복문 (후반전) 오른쪽으로 치우친 별 쌓기에 질문이 있습니다.
0
117
2
응용이 어렵습니다.
0
206
2
IntelliJ가 보이지 않습니다.
0
187
3
JDK 버전 문의
0
130
2
BlackBox 파일 내에서 메소드 정의
0
136
1
동기화
0
123
2
Iterator 문의
0
105
1
코드 순서 문의
0
143
1
클래스 메소드
0
150
2
Quiz_05 관련 질문드립니다 !
0
118
2
다운로드가 안됩니다
0
165
2
다형성
0
120
2
HashMap
0
81
2





