WEBVTT 00:00:00.640 --> 00:00:04.951 우선, decode 메소드를 어떻게 사용할지 생각해 봅시다. 이 메소드는 해독된 00:00:04.951 --> 00:00:10.390 메시지를 리턴 할겁니다. 그리고 매개변수는 필요 없습니다. 00:00:10.390 --> 00:00:18.660 decoder 테스터를 보면, docoder.decode의 결과를 출력해야 합니다. 00:00:18.660 --> 00:00:23.664 decoder 테스터는 암호화된 메시지를 이미 갖고 있습니다. 그래서 이 문자열을 00:00:23.664 --> 00:00:28.448 다시 넘길 필요가 없습니다. 이제 docder로 다시 돌아와서, 우리는 0번째 00:00:28.448 --> 00:00:33.820 문자로 시작해서 각각 10번째 문자만 저장하는 for문을 작성해야 합니다. 00:00:33.820 --> 00:00:36.180 문자열을 확인해야 하니까 비밀 메시지의 길이만큼 for문이 반복되야 00:00:36.180 --> 00:00:40.652 합니다. 우리가 읽을 문자열은 EncodedMessage 안에 있습니다. i를 00:00:40.652 --> 00:00:45.092 1만큼 자동 증가를 하지 않고 10만큼 자동 증가하기로 하겠습니다. 그래야 00:00:45.092 --> 00:00:51.552 10번째 문자를 읽어오기 때문입니다. 반복문 안으로 들어가서, 반복해야 할 부분은 00:00:51.552 --> 00:00:57.730 i가 i번째 글자를 읽어오고 decodedMessage에 저장하는 것입니다. 00:00:57.730 --> 00:01:03.425 그래서 decodedMessage는 decodedMessage + encodedMessage.substring(i, i+1)이 00:01:03.425 --> 00:01:08.560 됩니다. 이렇게 해야 한 문자열 안의 한 글자만 가져올 수 있다는 것을 기억하세요. 00:01:08.560 --> 00:01:12.718 실행해보니 비밀 메시지가 더 있습니다. 뭔지 궁금하시면 00:01:12.718 --> 00:01:14.842 다른 인덱스로부터 시작을 해야 알 수 있을 것 같습니다. 00:01:14.842 --> 00:01:18.781 하지만 지금은 잠시 오류에 대해서 설명해 보도록 하겠습니다. 00:01:18.781 --> 00:01:23.722 이와 같이 여기에 <나 <=를 이렇게 작성했다면, 00:01:23.722 --> 00:01:28.556 '문자열 범위 이탈'이라는 예외 처리가 뜰 겁니다. 00:01:28.556 --> 00:01:34.239 너무 높은 인덱스를 enocdedMessage 안에서 가리키면, 문자열 범위 이탈 00:01:34.239 --> 00:01:38.411 예외 처리가 일어나서 실행시간 오류가 됩니다. 실행시간 오류가 좋은 점은, 00:01:38.411 --> 00:01:41.711 프로그램에 여러분에게 오류가 뭔지 알려주기 때문입니다. 00:01:41.711 --> 00:01:47.214 아무것도 모른채 자신의 프로그램을 이상하게 바꾸는 것 보다 훨씬 더 좋은 것 같습니다. 00:01:47.214 --> 00:01:50.926 하지만 이 문제를 enocdedMessage.length() -1을 넣으면서 00:01:50.926 --> 00:01:55.637 해결을 할수도 있습니다. 실행은 잘 되지만, 제가 생각할 때는 00:01:55.637 --> 00:02:00.806 깔끔해 보이지 않습니다. 문자열을 이용해서 반복할 때는, i를 길게 하고 00:02:00.806 --> 00:02:04.674 length를 짧게 하는 것이 좋습니다.