티스토리 뷰
String 객체를 활용한 문자열 다루기를 알아보자.
1. 사용방법
1) 문자열 정의하기 : 따옴표를 활용 => String 변수이름 = "저장할 문자열";
2) 문자열의 길이 측정 : length() method를 활용 => int len = 변수이름.length();
3) 배열에 저장 : n개의 문자열을 저장할 배열(n의 type은 int) : String[] st_array = new String[n];
2. 문자열 다루기
1) 문자열의 비교
a) 문자열이 같은지를 비교=> equals() method를 활용
a.equals(b)를 활용하면 문자열 a와 문자열 b를 비교해 값이 일치한다면? True 아니라면? False를 출력. boolean값
[예시를 통해 확인해보자]
코드설명 : who에 Scanner를 활용해 입력받은 문자열을 s1이라는 객체에 저장된 personName 메소드를 통해 반환받은 문자열과 비교해서 같다면 s1.getGPA() 메소드를 사용해 이름을 프린트하는 코드
이때, s1.personName.equals(who)를 사용한것처럼 문자열을 서로 비교할 수 있다.
% 단, a 값이 null값이라면 NullPointerException error 발생. / b값이 null이라면 false를 반환.
https://offbyone.tistory.com/401를 참고.
b) 문자열의 우선 순위 비교(사전순)
=> compareTo() method를 활용해 사전순으로 먼저있다면 True, 아니라면 False를 반환.
2) 배열과 문자열
a) 문자열을 받아 공백을 기준으로 분할하여 배열에 저장하고 싶은 경우
=> 문자열.split(" ")을 활용하여 문자열에 받아놓을 수 있다.
% [주의] 이때, length를 사용할때 주의해야함. => 문자열의 길이를 잴 때는 a.lenght()/ 배열일 경우 a.lenght
b) 배열에 저장된 문자열에서 특정 문자를 뽑아내고 싶을 때
=> charAT(int index)를 활용해 특정 문자열중 특정 index값을 가진 문자를 뽑아낼 수 있음.
3) 대문자와 소문자.
a) 모든 것을 대문자로 변환.
=> String toUpperCase()
b) 모든 것을 소문자로 변환.
=> String toLowerCase()
4)문자열 바꾸기
특정 문자열을 원하는 문자열로 바꾸고 싶을때
=> String replace(CharSequence target, CharSequence replacement)로 target을 replacement로 바꾸기.
백준 1316번을 풀면서 문자열을 익혀보자.
package baekjoon;
import java.util.Scanner;
public class group_number_1316 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int cnt=0;
String[] st = new String[n];
for(int i=0; i<n; i++) {
st[i] = sc.next();//next의 default값은 string => int나 double로 change가능
}
for(int i=0; i<n; i++) {
if(st[i].length()==1) {
cnt++;
continue;
}
int [] check = new int[26];
check[(int)st[i].charAt(0)-97]=1;
for(int j=1; j<st[i].length(); j++) {
int c = st[i].charAt(j);
if(check[c-97]!=0 && st[i].charAt(j-1)!=st[i].charAt(j)) {
break;
}
else {
check[c-97]+=1;
if(j==st[i].length()-1) {
cnt++;
}
}
}
}
System.out.print(cnt);
sc.close();
}
}
[코드설명]
- 소문자만 입력받기때문에 아스키코드를 활용 => 길이가 26인(소문자 알파벳개수) check배열을 생성.
- 입력받은 수만큼의 String 배열을 만들어 저장하고 for문을 돌면서 String배열에 저장된 문자열을 하나씩 꺼냄.[i활용]
- i번째 문자열에서 문자 하나씩 접근하기 위해서 charAt을 활용하고 [j]를 활용해서 index를 통해서 문자로 접근.
- 특정 문자열의 문자에 차례대로 j를 활용해 접근하며 check배열에 -97을 활용해 특정문자가 나올때마다 +1을 해주고 만약 check배열값이 0이 아닐경우 이전에 나왔다는것임. => 이전에 나왔으면서 직전에 해당 문자가 없었다면 1316번의 조건에 맞지 않으니 break함.=> 다른경우라면, cnt+1을 해줌으로써 원하는 문자열의 개수를 찾아내줌.
'모바일소프트웨어 > 자바' 카테고리의 다른 글
Generic class (0) | 2021.10.19 |
---|---|
자바에서의 객체 비교 (0) | 2021.10.16 |
Static변수와 객체생성의 관계 (0) | 2021.10.01 |
java 변수 (0) | 2021.09.28 |
객체와 클래스(Java Objects and Class) (0) | 2021.09.15 |
- Total
- Today
- Yesterday
- 기본 텍스트 분류
- mm1queue
- 모듈 사용법
- CREATE ASSERTION
- 코딩월드뉴스
- 10866 백준
- 시뮬레이션 c
- 백준 4963
- 스택 파이썬
- 파이썬 알아두면 유용
- 온라인프로필 만들기
- 백준 숫자놀이
- 효율적인방법찾기
- 딥러닝입문
- 백준 10866
- DRF 회원관리
- 백준 15650 파이썬
- stack 컨테이너
- c++덱
- 기사작성 대외활동
- 백트래킹(1)
- 영화 리뷰 긍정 부정 분류
- 소프트웨어공학설계
- 11053 백준
- 4963 섬의개수
- LAMBDA
- 백준 11053 파이썬
- 13886
- 핀테크 트렌드
- CSMA/CD란?
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |