Array 01
class Array01
{
public static void main(String[] args)
{
int[] record; // 배열변수 생성
record = new int[25]; // 메모리 할당
// 배열의 초기화
for(int i=0;i<record.length;i++) {
record[i] = i;
}
// call by reference
change(record);
System.out.println(record[5]); // 100
// 배열을 출력하는 전용메소드
printArray(record);
// 문자배열을 선언하고 초기화, 원소출력의 예
char[] ca = new char[26];
char c = 'A';
for(int i=0;i<ca.length;i++) {
ca[i] = c++;
}
for(int i=0;i<ca.length;i++) {
System.out.print(ca[i]);
}
System.out.println("---끝");
// String배열을 선언하고 초기화, 출력하는 예
String[] member = new String[5];
member[0] = "홍길동";
member[1] = "정윤재";
member[2] = "문현절";
member[3] = "윤지선";
// 위에서 배열의 원소를 초기화할 때 불편했던 점을 생각하게 하고 좀더 편리한 방법을 소개한다.
// 위 사람들의 전화번호를 저장할 수 있는 String 배열을 생성, 초기화한다.
String[] phone = {"010-645-654", "016-4532-6789", "010-678-654", "016-765-587"};
// 위의 String 배열 2개를 이용하여 특정인의 전화번호를 출력하는 프로그램을 작성해 보세요.
String key = "정윤재";
for(int i=0;i<member.length;i++) {
if(member[i]==key) System.out.println(key+"님의 전화번호: "+ phone[i]);
}
// 위의 배열 2개를 이용하는 검색전용 메소드를 작성하고 실행해 본다.
// 메소드는 사람이름을 파라미터로 받아서 배열에서 전화번호를 검색한 후에 검색된 전화번호를 리턴하는 기능을 갖게한다.
// main() 메소드에서 선언된 배열을 하위 메소드로 전달하여 검색을 해야 한다.
String pn = search(member, phone, key) ;
System.out.println("검색된 전화번호==> "+pn);
// 전화번호에 010 이 포함된 사람들의 명단을 리턴하는 메소드를 작성하고 실행 및 결과를 출력해 보세요.
String[] names = search02(member, phone, "010");
System.out.println("전화번호가 010 인 사람들의 명단");
for(int i=0;i<names.length;i++) {
System.out.print(names[i] + "\t");
}
System.out.println();
// 큰 수부터 정렬하기(버블정렬 알고리듬 이용)
// java.util.Random 클래스를 이용하여 100이하의 수 중에서 10개의 난수를 추출하여 배열에 저장한 후에
// 그 배열의 원소들을 작은 순으로 정열해 본다.
int[] sorted = bubbleSort();
for(int i=0;i<sorted.length;i++) {
System.out.print(sorted[i]+"\t");
}
System.out.println();
// 중복되지않는 10개의 임의의 수를 배열에 저장하여 리턴하는 메소드의 예
System.out.println("중복되지않는 10개의 임의의 수 추출");
int[] rn = randomNum();
for(int i=0;i<rn.length;i++) {
System.out.print(rn[i]+"\t");
}
} // end of main()
// 하위 메소드에서 참조를 이용하여 main안에서 선언된 내용을 변경하는 예(call by reference)
static void change(int[] record) {
record[5] = 100;
}
// 배열의 원소를 출력하는 예
static void printArray(int[] record) {
for(int i=0;i<record.length;i++) {
System.out.println(record[i]);
}
}
// 배열에서 검색하여 결과를 리턴하는 메소드
static String search(String[] name, String[] phone, String key) {
for(int i=0;i<name.length;i++) {
if(name[i] == key) return phone[i];
}
return null;
}
// 전화번호가 010 으로 된 사람들의 명단을 배열로 리턴하는 메소드를 생성하고 리턴하는 메소드
static String[] search02(String[] name, String[] phone, String num) {
int count = 0;
for(int i=0;i<phone.length;i++) {
if(phone[i].indexOf(num)!= -1) count++; // 검색된 수만 확인한다.
}
// 검색된 수만큼의 배열공간을 확보한다.
String[] found = new String[count];
int idx = 0;
for(int i=0;i<phone.length;i++) {
if(phone[i].indexOf(num)!= -1) found[idx++] = name[i]; // 검색된 사람들의 이름을 배열에 저장한다
}
return found; // 배열을 리턴한다
}
// 임의의수 10개를 추출하여 배열에 저장하고 배열의 원소를 버블정렬하여 정렬된 배열을 리턴하는 메소드
static int[] bubbleSort() {
java.util.Random rd = new java.util.Random();
int[] ia = new int[10];
// 임의의 100이하의 수를 10개 추출한다.
for(int i=0;i<10;i++) {
ia[i] = rd.nextInt(100);
}
//버블정렬 알고리듬을 구현한다
int j = 1;
int temp = 0;
for(int i=0;i<ia.length;i++) {
j = i+1;
for(;j<ia.length;j++) {
if(ia[i] > ia[j]) {
temp = ia[i];
ia[i] = ia[j];
ia[j] = temp;
}
}// end of inner for()
}// end of outer for()
return ia;
}
// 중복되지않는 10개의 수를 배열에 저장하여 리턴하는 메소드
static int[] randomNum() {
java.util.Random rd = new java.util.Random();
int[] ia = new int[10];
int idx = 0; // 배열에 원소가 추가될 때마다 증가하는 인덱스
int temp = 0;
boolean exist = false;
while(idx<10) {
exist = false;
temp = rd.nextInt(100);
for(int i=0;i<=idx;i++) {
if(temp==ia[i]) {
System.out.println("중복된 수 발견");
exist = true;
break;
}
} // end of for()
if(!exist) ia[idx++] = temp;
}// end of while()
return ia;
}
}