inflearn logo
강의

Course

Instructor

Nadocoding's Java Basics - Full Course (20 hours)

If (First Half)

퀴즈 3번 질문

406

dfcsdgd9703293430

7 asked

0

 제가 수정해서 만든 코드들도 정상적으로 작동하는 데 '나도코딩'님이 예시로 준 코드와 차이점이 뭔가요?

  1. 제 코드가 메모리를 더 차지해서 이런 방법으로 쓰진 않나요?

  2. 퀴즈 3번의 예시가 indexOf를 사용할 필요가 없을 정도로 간단해서 쓸 필요가 없는 건가요?

    public class _Quiz_03 {
        public static void main(String[] args) {
            String B01 = "901231-1234569"; //하이픈을 포함한 정수(숫자)들을 문자열로 만들기 위해 변수 String 사용
            String B02 = "030708-4567890"; //하이픈을 포함한 정수(숫자)들을 문자열로 만들기 위해 변수 String 사용
    //
            System.out.println("김영희님의 주민번호는 " + B01.substring(B01.indexOf("9"), B01.indexOf("2", 6)) + " 입니다.");
            System.out.println("김철수님의 주민번호는 " + B02.substring(B02.indexOf("0",0), B02.indexOf( "5", 5)) + " 입니다.");
            // (내가 처음 만든 방식) 잘 작동은 되지만 코드가 길어서 메모리를 더 잡아 먹는다.
    
            //indexOf( "찾을 특정 문자" , "시작할 위치" ) 이런식으로 사용해 주면된다.
            //"시작할 위치" 같은경우는 생략이 가능하며 생략할 경우 0번째 즉 처음부터 찾기 시작한다.
            System.out.println(B01.substring(B01.indexOf("9"),B01.indexOf("2", 4)));
            System.out.println(B02.substring(B02.indexOf("0"), B02.indexOf("5")));
            //(수정된 방법)
    
            //(나도코딩님 예시)
            String id = "901231-1234569";
            System.out.println(id.substring(0,8)); //0 위칩터 8위치 직전가지
        }
    }
    

java 객체지향

Answer 2

1

nadocoding

안녕하세요?
핫도그님께서 남겨주신 소스코드는 B01 또는 B02 에 해당하는 주민등록번호를 가진 사람이 아니면 사용할 수 없는 코드입니다. 고장난 시계도 하루에 2번은 맞지만 그 외의 시간은 모두 틀리듯, 소스코드의 문자열에서 일부만 다른 것으로 바뀌어도 금방 에러 (또는 잘못된 결과) 가 발생합니다.

수정 전, 원래 데이터는 이렇게 되어 있었습니다.

String B01 = "901231-1234569"; // 수정 전

실행 결과는 이렇게 잘 나타나네요.

김영희님의 주민번호는 901231-1 입니다.

위 데이터의 첫 번째 자리를 9 에서 0 으로 바꾸었습니다.

String B01 = "001231-1234569"; // 수정 후

그랬더니 다음과 같은 오류가 발생해버렸어요.

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -5
	at java.lang.String.substring(String.java:1967)
	at _Quiz_03.main(_Quiz_03.java:7)	

프로그램은 물론 단 한 사람을 위해 만들어질 수도 있기는 하겠지만, 퀴즈에서 요청한 내용은 대한민국 국적을 가진 모든 사람의 개인정보에 공통적으로 적용할 수 있는 프로그램이었습니다. 그렇기 때문에 특정 정보를 포함하는 형태로 코드를 작성하기보다는 모든 데이터에 적용될 수 있는 조건을 찾아서 처리하는 것이 좋습니다 😊
감사합니다.

0

dfcsdgd9703293430

완전히 이해됐습니다. :) 궁금증이 해결돼서 좋네요. 감사합니다:)

자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?

0

136

2

static이 뭐였는지 기억이 안나요 ㅜㅜ

0

111

2

Iterator (알 수 없음) 데이터 삭제 후 초기화 관련 문의

0

70

1

사고력 키우는 법이 어떤게 있나요?

0

91

2

getter setter

0

101

2

섹션9. 66 메소드 오버로딩 시 질문이 있습니다.

0

78

1

안녕하세요 갑자기 프로그램 에러가 떠서 안되네요

0

75

2

변수 이름짓는법

0

114

2

intelli J 실행오류

0

114

2

혹시 이건 수학적 사고가 부족한 걸까요?

0

152

2

영상이 재생이 안됩니다.

0

166

3

이중 반복문 (후반전) 오른쪽으로 치우친 별 쌓기에 질문이 있습니다.

0

114

2

응용이 어렵습니다.

0

203

2

IntelliJ가 보이지 않습니다.

0

182

3

JDK 버전 문의

0

128

2

BlackBox 파일 내에서 메소드 정의

0

136

1

동기화

0

120

2

Iterator 문의

0

104

1

코드 순서 문의

0

139

1

클래스 메소드

0

148

2

Quiz_05 관련 질문드립니다 !

0

117

2

다운로드가 안됩니다

0

165

2

다형성

0

118

2

HashMap

0

80

2