작성
·
66
·
수정됨
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
자바 중급 1편 String클래스 문제와 풀이 1에 5번째 indexOf와 substring을 조합해서 hello.txt 의 파일 명과 확장자 부분을 분리하는 문제입니다.
package lang.string.test;
public class TestString5 {
public static void main(String[] args) {
String str = "hello.txt";
String ext = ".txt";
int index = str.indexOf(ext);
String fileName = str.substring(0, 5);
System.out.println("fileName = " + fileName);
System.out.println("extName = " + ext);
}
}
제 코드
package lang.string.test;
public class TestString5 {
public static void main(String[] args) {
String str = "hello.txt";
String ext = ".txt";
int extIndex = str.indexOf(ext);
String filename = str.substring(0, extIndex);
String extName = str.substring(extIndex);
System.out.println("filename = " + filename);
System.out.println("extName = " + extName);
}
}
정답 코드
위 코드가 제가 작성한거고 아래 코드가 pdf교재의 정답입니다. 선생님과 코드는 다르지만 같은 결과가 나왔습니다. 제가 궁금한 건 선생님처럼 코드 작성을 하면 더 좋은 부분이 있나요? 혹은 제가 작성한 코드가 결과는 같지만 어떠한 문제가 있는 게 아닐까 싶어서 질문 남겨봅니다. 단순한 호기심입니다!
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
저는 자바에서 indexOf
와 substring
을 사용하여 파일명과 확장자를 분리하는 코드에 대한 질문에 대해 안내해 드리겠습니다.
질문해주신 코드에서 두 가지 방식 모두 동일한 결과를 출력하는 것으로 보입니다. 학생님은 indexOf
메서드를 사용하여 확장자의 시작 위치를 식별한 후 substring
을 이용해 파일명과 확장자를 각각 추출하는 방법을 사용하셨습니다.
선생님 코드와 비교하여 두 방식 사이에 특별히 나쁜 점이나 문제 되는 부분은 없습니다. 단지 코드의 가독성과 명확성 측면에서 두 방식에는 차이가 존재할 수 있습니다.
여기에서 중요한 점은, indexOf
메서드를 사용하여 특정 위치를 확실하게 식별한 후 그 위치를 기반으로 substring
을 통해 문자열을 나누었다는 점입니다. 이 방법은 문자열 조작 시 매우 일반적이며, 문제가 없다고 할 수 있습니다.
다만, 기존에 작성하셨던 코드에서 만약 .ext
가 아닌 다른 확장자를 가진 파일명이 들어오는 경우에도 올바르게 동작할 수 있는지 유의해볼 가치가 있습니다. 확장자가 다를 경우 코드를 수정하여 보다 일반적으로 확장자를 분리할 수 있도록 로직을 조정하는 방식도 생각해볼 수 있습니다.
질문자님의 코드가 효율적이며 논리적으로도 문제가 없지만, 계획에 따라 다르게 접근할 수 있는 여러 가지 방법들에 대해 생각해 보시는 것도 좋습니다.
다른 유사한 질문도 함께 참고하셔서 이해를 확장해 보시기를 권장 드립니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.