본문 바로가기

공부/자바 OOP

5월 21일 - 배열 1

Array 배열

 

의미 : 동일한 자료형값의 집합

관련용어 : 순서, 색인, index(순서값, 0부터 시작), element 요소

배열 종류

  1차원 : 열로 구성 (아파트 0층만 있는게 1차원 1층,2층, 3층,,,)

  2차원 : 행과 열로 구성 

  3차원 : 자바에는 없는 개념 -> 자바의 클래스를 더 많이 사용 

열, 칸 : column

행, 줄 : row

new 연산자로 메모리를 할당한 후 사용한다

 

예를 들면 시험성적 출력할 시, 100명의 학생의 이름을 다 입력할 수는 없음. 이때 하나로 묶어주는 배열을 사용!

동일한 자료형을 묶은 하나의 변수 -> kor

<----------------------kor-------------------------->

60 100 85

       kor[0]               kor[1]               kor[2] 

순서값은 0부터 시작 .

 

예제) 배열의 인덱스 칸 수 

int[] kor = new int[3]; //new를 씀으로 메모리 할당
kor[0]=60; //배열의 인덱스는 0부터 시작한다
	       //배열의 인덱스는 1씩 증가산다
kor[1]=100;
kor[2]=85;
	    
System.out.println(kor[0]);
System.out.println(kor[1]);
System.out.println(kor[2]);
	    
System.out.println(kor .length); //kor 배열요소의 칸 수 

출력결과
3

. 를 치면 나오는 length함수를 이용 배열요소의 칸 수 를 출력

 

예제) 열거형

int [] eng = {55, 40, 80}; //괄호 안 정수 3개=4byte 3개 자동으로 선언해줌
		                   //열거형
int size = eng .length ;
for(int a=0; a<size; a++){
	System.out.println(eng[a]); //a로 출력했을 시 0,1,2 인덱스 순서값만 출력
			                    //eng[a]로 출력했을 시 각 인덱스안의 값이 출력
}//for end

출력결과
55
40
80

예제) 1차원 문자열 double, char, String

double[] aver={ 1.2, 3.4, 5.6};
for (int a=0; a<aver.length ;a++){
	System.out.println(aver[a]);
}//for end

출력결과
1.2
3.4
5.6
//-----------------------------------------------------------------------
char[] ch= {'H','E','L','L','O'};
for (int a=0; a<ch.length ; a++){
	System.out.println(ch[a]);
}//for end

출력결과
H
E
L
L
O
//-----------------------------------------------------------------------
String[] name={"진달래","개나리","무궁화"};
for (int a=0; a<name.length ; a++){
	System.out.println(name[a]);
}//for end

출력결과
진달래
개나리
무궁화

 

<연습문제> -1차원 문자열 배열

char[] ch={'S','o','l','d','e','s','k'};
int size=ch.length ;
		
for(int idx=0; idx<size; idx++){
	System.out.println(ch[idx]);
}//for end
		
System.out.println();

위의 코드를 참조하여 아래문제를 푸시오

문제 1) 대문자, 소문자의 갯수를 각각 구하시오 +문제 2) 모음의 갯수 같이

int upper=0, lower=0, mo=0;
for(int idx=0;idx<size;idx++){
	if(ch[idx]>'A' && ch[idx]<'Z'){
		upper++;
	}//if
	if(ch[idx]>'a' && ch[idx]<'z'){
		lower++;
	}//if
	
    switch(ch[idx]){
		case 'a' :
		case 'e' :
		case 'i' :
		case 'o' :
		case 'u' : mo++;
	}//if end			
}//for end
		
System.out.println("대문자의 갯수는 "+upper);
System.out.println("소문자의 갯수는 "+lower);
System.out.println("모음의 갯수는 "+mo);

출력결과
대문자의 갯수는 1
소문자의 갯수는 6
모음의 갯수는 2	

문제 2) 모음의 갯수를 구하시오

//내 풀이
int moem=0;
for(int idx=0;idx<size;idx++){
	if(ch[idx]=='o'||ch[idx]=='l'||ch[idx]=='d'||ch[idx]=='e'||ch[idx]=='s'||ch[idx]=='k'){
		moem++;
	}//if end
}//for end
       
System.out.println("모음의 개수는 "+moem);

출력결과
모음의 갯수는 6

문제 3) 대문자와 소문자를 서로 바꾸어 출력하시오
        -> 출력결과 ; sOLDESK

for(int idx=0;idx<size;idx++){
	if(ch[idx]>='A' && ch[idx]<='Z'){
		System.out.print((char)(ch[idx]+32));
	}else if(ch[idx]>='a' && ch[idx]<='z'){
		System.out.print((char)(ch[idx]-32));
	}else{
		System.out.print(ch[idx]);
	}//if 
}//for

출력결과
sOLDESK

아스키 코드를 이용해서 +-32 바꿔서 출력