๑ `⌃´ ๑

오늘은 문자열 내에서 특정 문자가 있는 인덱스를 찾는 코드를 짜보겠습니다.

이제 슬슬 그동안 배운 것들을 섞어서 코드를 짜기 시작하니 어려워지네요.

 

1. 프로그래밍 기본으로 해결하는 방법

2. 자바에서 제공하는 메서드를 활용하여 해결하는 방법

두 가지로 코드를 짤 수 있습니다.

 

우선 인덱스를 찾아낼 문자열을 작성해줍니다.

1
2
String str = "abcdabcdabcd";
int intResult;
cs

문자열 "abcdabcdabcd"에서 c의 인덱스를 찾아낼겁니다.

변수 intResult는 두 번째 방법을 사용할 때 필요한 변수입니다.

 

 

1. 프로그래밍 기본으로 해결하는 방법

indexOf() 메서드와 lastIndexOf() 메서드는 각각 앞과 뒤에서부터 특정 인덱스를 찾는 메서드입니다.

하지만 인덱스를 하나 찾으면 거기서 실행이 멈추는 단점이 있습니다. 현재 선언된 문자열에는 c가 총 3개가 있으므로,

c의 인덱스 3개를 찾아내야 합니다.

그래서 특정 인덱스를 가져오는 메서드인 charAt() 메서드를 반복문에 넣어,

메서드에 문자열 인덱스를 하나씩 넣어보고 c와 일치하는지 판단할 것입니다.

1
2
3
4
5
for (int i = 0; i < str.length(); i++) { //i는 0부터 str 문자열의 길이가 되기 전까지 1씩 증가
            if (str.charAt(i) =='c') {  //만약 str 문자열 내 i번 인덱스가 c 와 같다면
                System.out.println("c의 인덱스 : "+i); //아래 출력문을 출력
            }
        }
cs

charAt() 메서드를 사용했기 때문에 ""가 아닌 ''를 통해 문자를 감싸줘야 합니다.

출력하면 c의 인덱스 2, 6, 10을 차례대로 출력합니다.

 

 

2. 자바에서 제공한 메서드를 활용하는 방법

이번에는 indexOf(ch, fromIndex) 메서드를 활용해보겠습니다. indexOf(ch, fromIndex) 메서드는 문자 ch를 몇 번 인덱스부터 찾게 명령하는 메서드입니다. 이 메서드 역시 인덱스 여러개를 한 번에 찾아내지는 못하기 때문에, 반복문 while을 사용해 문자열 str에서 c가 있는 문자열을 찾겠습니다. 여기서 while문을 사용하는 이유는, 반복횟수가 정해져있지 않기 때문입니다.

indexOf 메서드는 특정 문자열을 찾지 못했을 경우 -1을 반환하므로, -1이 되기 전까지 반복문을 돌릴 것입니다.

1
2
3
4
5
6
7
8
9
10
11
intResult = 0;
//변수 intResult에 0을 넣어 값을 초기화해줍니다.
 
while (intResult > -1) {  //intResult 값이 -1보다 클 경우 계속해서 아래 식이 반복됩니다.
    intResult = str.indexOf("c", intResult);
    //문자열 str에 .indexOf()메서드를 이용하여 문자 "c"를 intResult 번째 인덱스까지 찾도록 합니다.
    if (intResult > -1) {
        System.out.println("c의 인덱스: "+ intResult);
        intResult++;  
        //intResult의 값을 1씩 증가시켜주면, 이제 다음 인덱스로 넘어가 c를 찾을 수 있습니다.
    }
cs

intResult의 초깃값은 0을 넣어놨으므로, 0번째 인덱스부터 c를 찾게됩니다.
그런데 여기서 intResult의 값을 조정해주지 않으면,  while문이 인덱스2에서 계속해서 반복되기 때문에 intResult 값이 1씩 증가하도록 코드를 추가해야 합니다.

문자 c를 찾았을 경우 몇 번째 인덱스인지 출력하고, 그 다음 intResult 값이 1씩 증가하도록 if 조건문을 이용합니다.

코드를 작동시키면 첫 번째 방법과 마찬가지로 c가 있는 인덱스 세 부분이 연달아 출력됩니다.

'Java' 카테고리의 다른 글

자바의 IO(Input/Output)  (0) 2022.05.06
스택(Stack)과 큐(Queue)  (0) 2022.05.06
자바의 Runtime Exception  (0) 2022.04.25
Hash Table과 특정 value값 찾아내기  (0) 2022.04.21
for 반복문을 이용하여 구구단 출력하기  (0) 2022.04.19
🎵 Playlist
loading...
00:00 / 00:00