강의

멘토링

로드맵

Inflearn brand logo image

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

keoung ko님의 프로필 이미지
keoung ko

작성한 질문수

김영한의 실전 자바 - 중급 1편

자바 중급 1편 String클래스 문제와 풀이 1, 5번문제

작성

·

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 인턴입니다.

저는 자바에서 indexOfsubstring을 사용하여 파일명과 확장자를 분리하는 코드에 대한 질문에 대해 안내해 드리겠습니다.

질문해주신 코드에서 두 가지 방식 모두 동일한 결과를 출력하는 것으로 보입니다. 학생님은 indexOf 메서드를 사용하여 확장자의 시작 위치를 식별한 후 substring을 이용해 파일명과 확장자를 각각 추출하는 방법을 사용하셨습니다.

선생님 코드와 비교하여 두 방식 사이에 특별히 나쁜 점이나 문제 되는 부분은 없습니다. 단지 코드의 가독성과 명확성 측면에서 두 방식에는 차이가 존재할 수 있습니다.

여기에서 중요한 점은, indexOf 메서드를 사용하여 특정 위치를 확실하게 식별한 후 그 위치를 기반으로 substring을 통해 문자열을 나누었다는 점입니다. 이 방법은 문자열 조작 시 매우 일반적이며, 문제가 없다고 할 수 있습니다.

다만, 기존에 작성하셨던 코드에서 만약 .ext가 아닌 다른 확장자를 가진 파일명이 들어오는 경우에도 올바르게 동작할 수 있는지 유의해볼 가치가 있습니다. 확장자가 다를 경우 코드를 수정하여 보다 일반적으로 확장자를 분리할 수 있도록 로직을 조정하는 방식도 생각해볼 수 있습니다.

질문자님의 코드가 효율적이며 논리적으로도 문제가 없지만, 계획에 따라 다르게 접근할 수 있는 여러 가지 방법들에 대해 생각해 보시는 것도 좋습니다.

다른 유사한 질문도 함께 참고하셔서 이해를 확장해 보시기를 권장 드립니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

keoung ko님의 프로필 이미지
keoung ko

작성한 질문수

질문하기