문자열 : "홍길동","이순신","이순신","을지문덕","김유신","연개소문","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]);
}
}
}