| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 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 | 31 | 
- java Fish
- java 논리연산자
- SQLD 핵심포인트
- SQLD 옵티마이저
- JAVA 연산자
- java Animal
- sqld 자격증
- java 구구단
- SQLD 특강
- sqld revoke
- sqld deny
- sqld trigger
- java 단축키
- Java 메소드
- java 상속
- PLSQL
- JAVA 제어문
- java 로또
- java 함수
- SQL
- SQLD 자격시험 개념정리
- sqld remame
- java string
- sqld grant
- java spider
- sqld 옵티마이져
- java
- JAVA for문
- java 성별
- Java Cat
- Today
- Total
SQLD, ECLIPS, JAVA,PYTHON, NODE....
[Eclips] Java class 3 - 배열, 2차원 배열, 본문
2023.12.11
## 배열
동일한 자료형을 묶어 저장하는 참조 자료형.
생성할때 크기를 먼저 지정해야 되고 한번 크기를 지정하면 절대 변경될 수 없는 특징이 있음.
| 예시 | 자료형 [ ] 변수명 | 자료형 변수명 [ ] | |
| int [ ] a; | int a[ ]; | int 자료형만 저장 가능한 배열 | |
| double [ ] b; | double b[ ]; | double 자료형만 저장 가능한 배열 | |
| String [ ] c; | String c[ ]; | String 자료형만 저장 가능한 배열 | 
## 배열 객체의 생성
| new 자료형[배열의 길이] | ||
| 예시 | new int [3]; | 정수형 3개 포함하는 배열 객체 생성 | 
| new double[5]; | 실수형 5개를 포함하는 배열 객체 생성 | |
| new String [5]; | 문자열 자료형 5개를 포함하는 배열 객체 생성 | |
| new int[]; | 객체의 크기를 지정하지 않아 오류발생 | |
배열에 저장된 값으로 객체 읽어보는 방법
| 0번째 | 1번째 | 2번째 | 
| 3 | 4 | 6 | 
배열 객체값 읽어오기
| 참조 변수형 [인덱스] | 출력 명령어 | 결과 값 | 
| System.out.println( a[0] ) | 3 | |
| System.out.println( a[1] ) | 4 | |
| System.out.println( a[2] ) | 6 | |
| System.out.println( a[-1] ) | 예외 발생 | |
| System.out.println( a[3] ) | 예외 발생 3번째 없음 | 
배열 객채 생성과 함께 값 대입하기
자료형 [ ] 참조 변수명 = new 자료형 [ ] {값, 값, 값}
(예시)
| 명령어 | 결과값 | 
| int a=0; | 기본 자료형 | 
| int[] b = null; | 참조 자료형 | 
| System.out.pringln(a); | 0출력 | 
| System.out.println(b); | null 출력 | 
a[0] = new int[3] --> int형 데이터 3개를 저장할 공간을 만들어 메모리에 넣고(new int[3]), 저장한 위치 정보를 a[0]에 저장.
※ 배열을 포함한 참조 자료형은 반드시 메모리 구조화 함께 이해하는 것이 매우 중요
| 배열의 선언과 객체의 대입을 분리해 표현 가능 / 불가능 | ||
| 가능 | int [ ] [ ] a = new int[ ] [ ] {{1,2,3},{4,5,6}} | Ok | 
| int [ ] [ ] b; b = new int [ ] [ ] {{1,2,3},{4,5,6}} | Ok | |
| int [ ] [ ] a = {{1,2,3}, {4,5,6}} | Ok | |
| 불가능 | X | |
## 제어문 복습
(예제1)
- 컴퓨터가 1~100 사이의 임의 수를 추출하여 변수에 보관
- 1 ~ 100 사이의 숫자를 입력
- 내가 입력한 수와 컴퓨터가 추출한 수를 비교하여 더 큰지, 작은지, 맞는지를 알려주기
- N번만에 맞추었는지 알려주기
import java.util.Scanner;
public class NumberGame {
	public static void main(String[] args) {
	
// 컴퓨터가 1~100사이의 임의 수를 추출하여 변수 random 에 보관		
		int random = (int)(Math.random()*100)+1;
// 1 ~ 100사의 숫자를 입력하기 위해 “ Scanner ” 객체 선언		
		Scanner scan = new Scanner(System.in);
		int cout = 0;
// 반복 횟수가 정해져 있지 않으므로 while문 또는 do – while문을 사용		
// 해당 코드에서는 한번은 실행되어야 해서 do – while문을 사용
		do {
// “num” 변수에 숫자를 입력 받기 위하여 “ nextInt “ 를 통하여 숫자 입력		
			System.out.print("숫자를 입력 하세요 : "); int num = sc.nextInt();
			cout += 1; // 입력 횟수를 출력 하기위한 변수 선언
// 내가 입력한 수와 컴퓨터가 추출한 수 비교를 하기 위하여 if 문을 사용		
// 변수 random 과 변수 num 을 통해서 두 수를 비교		
// 두 수를 비교하여 더 큰지, 더 작은지 , 맞는지를 알려주기 구현		
			if(random > num) {		
				System.out.println("숫자가 작습니다.");		
			} else if(random < num){		
				System.out.println("숫자가 큽니다.");		
			} else if(random == num) {		
				System.out.println("정답입니다. " + cout + "번 입력하여 맞추었습니다.");		
				break;		
			}
// 반복 횟수가 정해져 있지 않을 경우 조건에 true 값 지정하여		
// 반복문 안에서 종료를 할 수 있도록 처리		
		} while(true)
	}	
}
(예제2)
- Main 함수 실행 시 값을 넣기 위하여 “Run Configurations” 에서 “Arguments” 에 25 + 10 입력
- Main 함수를 실행하게 입력된 값을 통해서 + - * / % 연산 처리
public class ArrayEx3 {
	public static void main(String[] args) {
// String 타입의 args 배열에 저장된 값을 변수에 저장
// 현재 args 배열의 타입은 String 타입으로 변수에 저장된 숫자도 String 타입
// 따라서 “ Integer.parseInt “ 함수를 이용하여 int 타입으로 변경
		
		int num1 = Integer.parseInt(args[0]);
		
// args[1] 배열에 있는 첫번째 방 추출 ( charAt() 사용 )
		char op = args[1].charAt(0);
		
		int num3 = Integer.parseInt(args[2]);
		
// 만약 main 함수에 입력된 값이 3개를 초과 하게 될 경우 처리 할 if문
		if(args.length != 3) {
			System.out.println("실행방법 : java ArrayEx3 숫자 연산자 숫자");
			System.exit(0); // 프로그램 종료 기능을 가진 함수 ( .exit(0) )
		}
		
		Int result = 0; // 연산 된 값을 저장 하기 위하여 result 이름으로 변수 선언
		
// 간단한 계산 처리로 Switch – case 문으로 처리
		Switch(op){		
		Case ‘ + ’ :		
			result = num1 + num2; break; **// 값을 계산하여 result 값에 저장하고 break 를 통하여 종료		
		Case ‘ - ‘ :		
			result = num1 - num2; break;		
		Case ‘ / ‘ :		
			result = num1 / num2; break;
		
// main 함수에 값을 넣을 때에는 * 을 입력 할 수 가 없어서 ‘ x ‘ 또는 ‘ X ‘ 로 입력		
// ‘ x ‘ 와 ‘ X ‘ 2가지 모두 인식될 수 있도록 대,소문자 처리가 가능하게 작성 되어진 코드		
		Case ‘ X ‘ :		
		Case ‘ x ‘ :		
			result = num1 * num2; break;		
		Case ‘ % ‘ :		
			result = num1 % num2; break;
// 함수의 return 값이 존재할 경우 default 값은 무조건 있어야 한다.
		default :		
			System.out.println(“지원되지 않은 연산입니다.”);		
		}
		System.out.println(“결과 : ” + num1 + op + num2 + “ = “ = result);		
	}
}## 배열의 길이
배열참조 변수. length    -->  배열의 가리키는 곳으로 가서,방의 개수를 알아오는 것
ex) a.length = 2 
## for each 문
for(원소 자료형 변수명 : 집합 객체) {
 
## 2차원 배열
: 배열 순서는 0,1,2 ...로 정함.
1) 1차원 배열
int [ ]  a = new int[5];         // {1,2,3,4,5} 형태
           a는 데이터의 위치값 저장.
2) 2차원 배열
int [ ] [ ] b = new int [2][3] ;      // 2행 3열      ex. int = [c].length  --> c행의 모든 열을 의미.
    행 열
(참고)
: 배열의 선언과 객체의 대입은 분리해서 표현 불가능
1) int [][] a = {{1,2,3}, {4,5,6}}                    // 가능
    int [][] a = new int[][] {{1,2,3},{4,5,6}}  // 가능
2) int [][] b;
     b = {{1,2,3}, {4,5,6}}                  // 불가능  --> 해결:  new int를 선언해야 됨
    int [][] b:
    b = new int[][] {{1,2,3},{4,5,6}}  // 가능
| 2차원 정방행렬 배열 객체를 생성하고 값 대입하기 | |
| 자료형[ ] [ ] 참조 변수명 = new 자료형 [행의 길이] [열의 길이]; 참조 변수명 [0][0] = 값; 참조 변수명 [0][1] = 값; ... 참조 변수명[행의 길이-1] [열의 길이-1] = 값; | int [ ] [ ] a = new int[2][3]; a[0][0] = 1; a[0][1] = 2; a[0][2] = 3; a[1][0] = 4; a[1][1] = 5; a[1][2] = 6; | 
| 배열 명령어 | 결과 값은 모두 동일함 | 
| int [ ] [ ]  array1 = new int [2][3]; array1[0][0] = 1; array1[0][1] = 2; array1[0][2] = 3; array1[1][0] = 4; array1[1][1] = 5; array1[1][2] = 6; | 1 2 3 4 5 6 | 
| int [ ] [ ]  array2; array2 = new int[2][3]; array2[0][0] = 1; array2[0][1] = 2; array2[0][2] = 3; array2[1][0] = 4; array2[1][1] = 5; array2[1][2] = 6; | 1 2 3 4 5 6 | 
| int [ ] [ ] array3 = new int[ ][ ]{{1,2,3},{4,5,6}}; | 1 2 3 4 5 6 | 
| int [ ] [ ] = array4; array4 = new int[ ] [ ] {{1,2,3},{4,5,6}}; | 1 2 3 4 5 6 | 
| int [ ] [ ] array5 = {{1,2,3},{4,5,6}} | 1 2 3 4 5 6 | 
 
 3) 3차원 배열
int [ ] [ ] [ ] c = new int[2][3][4];
    면 행 열
  
(연습1) 1~5까지 숫자를 5줄로 배열하시오.
		int [] dd=new int[3];
		dd[0] = 3;
		dd[1] = 4;
		dd[2] = 5;
		System.out.println(dd[0] + " " + dd[1] + " " + dd[2]);
		
		int cnt =1;
		int [][] a = new int [5][9];
			for (int g=0; g<a.length; g++) {     	// 행의 수
				for(int d=0; d<a.length; d++) {     // 열의 수
					a[g][d]=cnt++;
					System.out.print(a[g][d] +"\t");
				}
				System.out.println();
				}
			}
	}(결과)
3 4 5
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 
(연습2) 성적표 범위 내에서 합계, 평균, 총점을 출력하시오.
// 성적표 제목 출력
		int [][] score = 
			{{90,85,65},
					{20,76,100},
					{30,30,30}, 
					{40,80,90}, 
					{100,70,60}};
		int koreaTotal = 0;
		int englishTotal= 0;
		int mathTotal = 0;
// 학생별 성적 총점, 평균 구하여 출력
// 과목별 합계 누적
		System.out.println("번호\t국어\t영어\t수학\t총점\t평균");
		System.out.println("=============================================");
		for(int a=0; a<score.length; a++) {
			System.out.print(a+1 + "\t");
			int	sum =0;		
			koreaTotal +=score[a][0];
			englishTotal +=score[a][1];
			mathTotal +=score[a][2];
			for(int b=0; b<score[a].length; b++) {
				sum+=score[a][b];
				System.out.print(score[a][b] + "\t");
			}
			System.out.print(sum +"\t");
			System.out.println(sum/3);
		}
		System.out.println("=============================================");
		System.out.println("합계: \t" + koreaTotal +"\t"+ englishTotal+"\t"+ mathTotal);
	}
}(결과)
번호	국어	영어	수학	총점	평균
=============================================
1	90	85	65	240	80
2	20	76	100	196	65
3	30	30	30	90	30
4	40	80	90	210	70
5	100	70	60	230	76
=============================================
합계: 	280	341	345
(연습3) 가변형 배열을 출력하시오.
가변(可變) : 사물의 모양이나 성질이 바뀌거나 달라질 수 있음. 또는 사물의 모양이나 성질을 바꾸거나 달라지게 할 수 있음.
//가변형 배열선언
		char [][] str = null;
		str = new char[5][];
		for(int z=0; z<str.length; z++) {
			str[z] = new char[z+1];
		}
// 값 초기화
		char temp = 'A';
		for(int a=0; a<str.length; a++) {
				for(int b=0; b<str[a].length; b++) { // 배열의 범위 지정
				str[a][b]=(char)temp;  				 // 배열에 값을 넣고
					System.out.print(str[a][b]);     // 배열의 값을 출력
				temp+=1;
			}
			System.out.println();
		}
	}
}(결과)
A
BC
DEF
GHIJ
KLMNO
'Java' 카테고리의 다른 글
| [Eclips] Java Class 5 - 매개변수, 오버로딩, 메소드 문제 및 정답 (0) | 2023.12.13 | 
|---|---|
| [Eclips] Java class 4 - 선언부, Method, signature, Overloading, windowbuilder 설치. (0) | 2023.12.12 | 
| [Eclips] Java class 2 - do while, switch, for 등 제어문 연습문제(다이아몬드 출력 등) (3) | 2023.12.08 | 
| [Eclips] Java class 2 - 논리연산자, 대입연산자, 논리시프트, 구구단, 짝수단, 배열, 로또, 동치연산자(가위바위보) (0) | 2023.12.08 | 
| [Eclips] Java class 1 - 연산자 문제 (4) | 2023.12.07 | 
 
                  