String 사용 실습

DeokHun KIM·2022년 7월 11일
0

java

목록 보기
14/30

문자열 : "홍길동","이순신","이순신","을지문덕","김유신","연개소문","Tom","TOM"
1. 위의 문자열 값을 저장할 수 있는 문자열 배열(names) 변수를 선언하고 입력
2. 배열에 있는 값을 구분자 콤마(,)로 구분하여 한 라인에 출력
출력 예) 홍길동,이순신,이순신,을지문덕....
3. 배열에 있는 데이터의 첫 글자만 출력-구분자 콤마(,) 사용 한 라인에 출력
출력 예) 홍,이,이,을,김,연,T,T...
4. 이름의 글자수가 4글자 이상인 이름을 검색해서 "인덱스번호:이름" 형태로 출력
예) 3:을지문덕
5. 이름이 같은 데이터를 "인덱스번호:이름=인덱스번호:이름" 형태로 출력
예) 1:이순신=2:이순신

//		1. 위의 문자열 값을 저장할 수 있는 문자열 배열(names) 변수를 선언하고 입력
//		String[] names = new String[8];  //8개의 문자열을 저장할 수 있는 공간이 만들어짐
//		names[0] = "홍길동";
//		names[1] = "이순신";
//		names[2] = "이순신"; //이렇게 하나하나 넣어서 할 수도 있다
		
//		String[] names = new String[] {"홍길동","이순신","이순신","을지문덕","김유신","연개소문","Tom","TOM"};
		
		String[] names = {"홍길동","이순신","이순신","을지문덕","김유신","연개소문","Tom","TOM"};
		
		//인덱스 번호와 데이터 함께 출력
		for (int i = 0; i < names.length; i++) {
			System.out.println(i + " : " + names[i]);
		}
		//데이터만 출력
		for (String name: names) {
			System.out.println(name);
		}

0 : 홍길동
1 : 이순신
2 : 이순신
3 : 을지문덕
4 : 김유신
5 : 연개소문
6 : Tom
7 : TOM
홍길동
이순신
이순신
을지문덕
김유신
연개소문
Tom
TOM

//2. 배열에 있는 값을 구분자 콤마(,)로 구분하여 한 라인에 출력
		//   출력 예) 홍길동,이순신,이순신,을지문덕....
		for (int i = 0; i < names.length; i++) {
			System.out.print(names[i] + ",");     //,를 맨앞 혹은 마지막 데이터를 처리해줘야한다
		}
		System.out.println();
		System.out.println("------------");
		
		System.out.println(">>>> 마지막 데이터 콤마 개별처리");
		for (int i = 0; i < names.length; i++) {
			if (i == names.length -1) { //마지막 데이터
				System.out.print(names[i]);
			} else {
				System.out.print(names[i] + ",");
			}	
		}
		System.out.println();
		System.out.println("------------");
		
		System.out.println(">>>> 첫 번째 데이터 콤마 개별처리");
		for (int i = 0; i < names.length; i++) {
			if (i == 0) {    //첫번째 데이터
				System.out.print(names[i]);
			} else {
				System.out.print("," + names[i]);
			}	
		}
		System.out.println();
		System.out.println("------------");
		
		//세번째 방법: 아예 분리해서 처리한다
		System.out.println(">>>> 패턴 분리 처리");
		
		if (names.length > 0) { //데이터가 있냐
			System.out.print(names[0]); //첫번째 데이터 분리처리 //데이터가 빈 문자열이 왔을 때 문제가 발생할수 있다
		}   //if문으로 0보다 크다고 설정해주면 오류가 발생하지 않는다
		
		//두번째 ~ 끝까지
		for (int i = 1; i < names.length; i++) {
			System.out.print("," + names[i]);
		}
		System.out.println();

홍길동,이순신,이순신,을지문덕,김유신,연개소문,Tom,TOM,

TOM 뒤에 콤마를 처리해줘야 한다.

세가지 방법으로 진행하였다
1.마지막 데이터 콤마 개별처리
2.첫 번째 데이터 콤마 개별처리
3.아예 분리해서 처리한다

세가지 방법 모두 결과는 아래와 같다

홍길동,이순신,이순신,을지문덕,김유신,연개소문,Tom,TOM


//3. 배열에 있는 데이터의 첫 글자만 출력-구분자 콤마(,) 사용 한 라인에 출력
		//   출력 예) 홍,이,이,을,김,연,T,T...
		if (names.length > 0) { //데이터가 있냐
			System.out.print(names[0].charAt(0)); 
		}  
		
		//두번째 ~ 끝까지
		for (int i = 1; i < names.length; i++) {
			System.out.print("," + names[i].charAt(0));
		}
		System.out.println();

홍,이,이,을,김,연,T,T


//4. 이름의 글자수가 4글자 이상인 이름을 검색해서 "인덱스번호:이름" 형태로 출력
		//   예) 3:을지문덕
		for (int i = 0; i < names.length; i++) {
			if (names[i].length() >= 4) {
			System.out.println(i + ":" + names[i]);
			}
		}

3:을지문덕
5:연개소문


//5. 이름이 같은 데이터를 "인덱스번호:이름=인덱스번호:이름" 형태로 출력
		//   예) 1:이순신=2:이순신
		//(기타) 이름 비교시에는 대소문자 구분 없이 비교처리(Tom, TOM 은 같다)
		//-------------------------------------
		//홍길동,이순신,이순신,을지문덕,김유신,연개소문,Tom,TOM  //데이터의 순서와 관계없이 처리할 수 있어야 한다
		
		//기준이 0일때 1~끝까지, 기준이 1일때 2~끝까지 ....
		for (int gijun = 0; gijun < names.length - 1; gijun++) {  //names.length - 1 는 마지막 데이터
			for (int i = (gijun + 1); i < names.length; i++) {
				//System.out.println(gijun + ":" + names[gijun] + " vs " + i + ":" + names[i]);
				if (names[gijun].equalsIgnoreCase(names[i])) { 
					System.out.println(gijun + ":" + names[gijun] + " vs " + i + ":" + names[i]);
				}
			}
		}

1:이순신 vs 2:이순신
6:Tom vs 7:TOM

위의 식을 하나씩 풀어서 생각해볼수 있다

for (int gijun = 0; gijun < names.length - 1; gijun++) {  //names.length - 1 는 마지막 데이터
			String name = names[gijun];
			for (int i = (gijun + 1); i < names.length; i++) {
				if (name.equalsIgnoreCase(names[i])) { 
					System.out.println(gijun + ":" + name + " vs " + i + ":" + names[i]);
				}
			}
		}
		System.out.println("==============");
		//홍길동,이순신,이순신,을지문덕,김유신,연개소문,Tom,TOM
		//기준인덱스 : 0 일때
		names = new String[] {"홍길동","이순신","이순신","을지문덕","김유신","연개소문","Tom","TOM"};
		if (names[0].equalsIgnoreCase(names[1])) {
			System.out.println(0 + ":" + names[0] + "=" + 1 + ":" + names[1]);
		}  //홍길동이 기준일때 0번 인덱스와 1번 인덱스 비교
		if (names[0].equalsIgnoreCase(names[2])) {
			System.out.println(0 + ":" + names[0] + "=" + 2 + ":" + names[2]);
		}  //2번 인덱스와 비교
		//....
		
		if (names[0].equalsIgnoreCase(names[names.length - 1])) {
			System.out.println(0 + ":" + names[0] + "=" + (names.length - 1) + ":" + names[names.length - 1]);
		}
		
		//기준인덱스 : 1 일때
		if (names[1].equalsIgnoreCase(names[1])) {
			System.out.println(1 + ":" + names[1] + "=" + 1 + ":" + names[1]);
		}  
		if (names[1].equalsIgnoreCase(names[2])) {
			System.out.println(1 + ":" + names[1] + "=" + 2 + ":" + names[2]);
		}  //2번 인덱스와 비교
		//....
		
		if (names[1].equalsIgnoreCase(names[names.length - 1])) {
			System.out.println(1 + ":" + names[1] + "=" + (names.length - 1) + ":" + names[names.length - 1]);
		}
		
		System.out.println("=== 반복문 처리 ===");
		for (int i = 1; i < names.length; i++) {
			if (names[0].equalsIgnoreCase(names[i])) {
				System.out.println(0 + ":" + names[0] + "=" + i + ":" + names[i]);
			}
		}
		
		//기준인덱스 1일때
		for (int i = 2; i < names.length; i++) {
			if (names[0].equalsIgnoreCase(names[i])) {
				System.out.println(1 + ":" + names[1] + "=" + i + ":" + names[i]);
			}
		}
		
		//기준인덱스 2일때
		for (int i = 3; i < names.length; i++) {
			if (names[0].equalsIgnoreCase(names[i])) {
				System.out.println(2 + ":" + names[2] + "=" + i + ":" + names[i]);
			}
		}
		//...
		//기준인덱스 : 마지막 이전 (names.length - 2)
		for (int i = names.length - 1; i < names.length; i++) {
			if (names[names.length - 2].equalsIgnoreCase(names[i])) {
				System.out.println((names.length - 2) + ":" + names[names.length - 2] + "=" + i + ":" + names[i]);
			}
		}
		
		System.out.println("======== 이중 반복문 처리 ========");
		for (int out = 0; out < names.length - 1; out++) {
			for (int i = out + 1; i < names.length; i++) {
				System.out.println(out + ":" + names[out] + " vs " + i + ":" + names[i]);
				if (names[out].equalsIgnoreCase(names[i])) {
					System.out.println(out + ":" + names[out] + "=" + i + ":" + names[i]);
				}
			}
		}

0개의 댓글