값들이 행과 열로서 구성된 배열을 2차원 배열이라고 한다.

2차원 배열은 가로 인덱스와 세로 인덱스를 사용한다.

 

//2(행) x 3(열)  

int[][] scores = new int[2][3];

 

 

/*다차원 배열(array) 행과 열

표현
-int[ ] [ ] arr = new int [n][n];
-int[ ] [ ] arr = {[n, n}
			   , {n, n}
			   , {n, n}};] -3행 2열

*/


int[][] intArray = new int [3][2];

int[][] intArray = {{n, n},
                    {n, n},
                    {n, n}};
                    

 

 

public static void main(String[] args) {
		int[][] arr = new int[3][2];
		arr[0][0] = 1;
		arr[0][1] = 2;
		arr[1][0] = 3;
		arr[1][1] = 4;
		arr[2][0] = 5;
		arr[2][1] = 6;
		System.out.println("arr[0][0] = " + arr[0][0]);
		System.out.println("arr[0][1] = " + arr[0][1]);
		System.out.println("arr[1][0] = " + arr[1][0]);
		System.out.println("arr[1][1] = " + arr[1][1]);
		System.out.println("arr[2][0] = " + arr[2][0]);
		System.out.println("arr[2][1] = " + arr[2][1]);

		System.out.println();

		for (int i = 0; i < arr.length; i++) { // 행의 길이 -3
			for (int j = 0; j < arr[i].length; j++) { // 2
				System.out.println("arr[ " + i + "] [" + j + " ]  = " + +arr[i][j]);

			}
		}
    }

 

int[][] array = { { 95, 86 }, { 83, 92, 96 }, { 78, 83, 93, 87, 88 } };
		int sum = 0;
		int max = 0;
		int count = 0;
		
		for (int i = 0; i < array.length; i++) {
			for (int j = 0; j < array[i].length; j++) {
				sum += array[i][j];
				count ++;
				
				
				if (array[i][j] > max) {
					max = array[i][j];
				}
			
			}
		}
		System.out.println("총 합은:  " + sum);
		System.out.println("평균은 : " + sum / count);
		System.out.println("최고값은 : " + max);
		System.out.println("배열의 총 개수 : " + count);

'JAVA' 카테고리의 다른 글

[JAVA] 메소드-2  (0) 2020.09.07
[JAVA] 메소드  (0) 2020.09.07
[JAVA] 데이터 타입 (배열2)  (0) 2020.08.31
[JAVA] 데이터 타입 (배열)  (0) 2020.08.31
[JAVA] 데이터 타입  (0) 2020.08.31

배열 변수를 미리 선언한 후, 값 목록들이 나중에 결정되는 상황이라면 new연산자를 사용해서 값 목록을 지정해주면 된다. new 연산자 바로 뒤에는 배열 변수 선언에서 사용한 "타입[]"을 붙여주고 중괄호{}안에 값들을 나열해 주면 된다.

 

변수 = new 타입[] {값0, 값1, 값2, 값3};

String[] names = null;
names = new String[] {"홍길동", "이순신", "세종대왕"};

 

값의 목록을 가지고 있지 않지만 ,향후 값들을 저장할 배열을 미리 만들고 싶다면 new연산자로 배열 객체를 생성시킬 수 있다.

 

타입[] 변수 = new 타입[길이];

//길이는 배열이 저장될 수 있는 값의 수를 말하고 new연산자로 배열을 생성할 경우에는
//이미 배열 변수가 선언된 후에도 가능하다. 

타입[] 변수 = null;
변수 = new 타입[길이];

//길이가 5인 int[]배열 

int [] intArray = new int[5];

//intArray 배열은 int배열이므로 intArray[0] ~ intArray[4]까지 기본값 0으로 초기화된다.

 

 

/*배열
-같은 자료형의 데이터를 여러개 저장하기 위한 메모리 공간
-생성된 메모리 공간에 index를 이용하여 각 기억장소를 구분함.
-배열크기는 length를 사용하여 구함.abstract

표현
-int[]arr = new int[n];(n개 만큼 0으로 초기화)  -> arr[0] = 1;
-int[]arr = {1, 2, 3};
-int[]arr = new int[] {1, 2, 3};*/

public class ArrayEx {

	public static void main(String[] args) {
		int[] arr = new int[3];
		
		arr[0] = 10;
		arr[1] = 20;
		arr[2] = 30;

		for (int i = 0; i < arr.length; i++) {
			System.out.println("arr[" + i + "] = " + arr[i]);
		}

		System.out.println();

		String[] str = new String[3];

		str[0] = "Hello";
		str[1] = "Hi";
		str[2] = "Good";

		for (int j = 0; j < str.length; j++) {
			System.out.println("str[" + j + "] = " + str[j]);
		}
		
		System.out.println();

		int[] arr2 = { 100, 200, 300};
		
		for(int val : arr2) {
			System.out.println(val);
		}
	}

}

 

'JAVA' 카테고리의 다른 글

[JAVA] 메소드  (0) 2020.09.07
[JAVA] 데이터 타입 (다차원 배열)  (0) 2020.08.31
[JAVA] 데이터 타입 (배열)  (0) 2020.08.31
[JAVA] 데이터 타입  (0) 2020.08.31
[JAVA] 조건문과 반복문 (5)  (0) 2020.08.29

같은 타입의 많은 양의 데이터를 다루는 프로그램에서는 배열을 사용하면 좀 더 효율적으로 데이터를 다룰 수 있다.

배열은 같은 타입의 데이터를 연속된 공간에 나열시키고, 각 데이터에 인덱스(index)를 부여해 놓은 자료구조이다.

 

점수를 나열한 배열을 예로 배열의 각 인덱스는 각 항목의 데이터를 읽거나, 저장하는데 사용되며 

배열이름[인덱스] 로 기입된다.

배열이름[0]은 83 배열이름[1]은 90 배열이름[2]는 87 값을 가진다.

 

 

배열은 같은 타입의 데이터만 저장할 수 있으며 int 배열은 int값만 저장가능하고, String 배열은 문자열만 저장 가능하다. 배열은 선언과 동시에 저장할 수 있는 데이터 타입이 결정된다. 만약 다른 타입의 값을 저장하려고 하면 타입 불일치(Type mismatch) 컴파일 오류가 발생한다. 또한 한 번 생성된 배열은 길이를 늘리거나 줄일 수 없다. 

 

 

배열을 사용하기 위해선 우선 배열 변수를 선언해야 한다. 

 

타입[] 변수;

int[] intArray;
String[] stringArray;
double[] doubleArray;

 또는 

 

타입 변수[];

int intArray[];
String stringArray[];
double doubleArray[];

이렇게 두 가지 형태로 작성이 가능하다.

 

만약 배열에 저장할 값이 있다면 이런식으로 배열 객체를 만들 수 있다.

데이터타입[] 변수 = {값0, 값1, 값2, ...};

int[] score = {80, 90, 85, 75};
String[] str = {"홍길동", "임꺽정", "백두산"};

자바의 데이터 타입에는 크게 기본 타입(원시 타입 : Primitive type)참조 타입(reference type)으로 분류된다.

 

기본 타입이란 정수, 실수, 문자, 논리 리터럴을 저장하는 타입을 말하고 

참조 타입이란 객체(Object)의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입을 말한다.

기본 타입으로 선언된 변수와 참조 타입으로 선언된 변수의 차이점은 저장되는 값이 무엇이냐이다.

기본 타입으로 선언된 변수는 실제 값을 변수 안에 저장하지만, 참조 타입인 배열, 열거, 클래스, 인터페이스를 이용해서 

선언된 변수는 메모리의 번지를 값으로 갖는다. 

while문)

for문이 정해진 횟수만큼 반복한다면, while문은 조건식이 참일 경우 계속해서 반복하는 특징이 있다.

조건식이 거짓(false)이면 반복을 멈추고 while문은 종료한다.

 

 

반복문 (While문)

while(조건식) {
	실행구문;
}


public class WhileEx {

	public static void main(String[] args) {
		int count = 0, input = 5;
		while(count < input) {
			count++;
			System.out.println("실행구문");
		}		
	}
}

while문이 처음 실행될 때 조건식을 먼저 평가한다. 평과 결과가 참(true)이면 실행문을 실행한다.

실행문이 모두 실행되면 다시 조건식으로 되돌아가서 조건식을 다시 평가하고 만약 조건식이 

(true)라면 또 다시 실행문이 실행된다. 

 

실행문이 모두 실행되고 조건식을 평가할 때 조건식이 거짓(false)라면 while문을 종료한다.

 

 

 

 

 

//1부터 10까지 합 출력(While문)
public class WhileEx2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int sum = 0, cnt =0;
		
		while(cnt <10) {
			cnt++;
			sum += cnt;
			}
		System.out.println(sum);
	}

}

sum 과 cnt를 각각 0으로 초기화 한 뒤 cnt가 10 미만이면 cnt를 1씩 증가시키고 sum에 cnt를 누적하여 1부터 10까지의 합을 구한다.

 

 

 

 

 

 

 

Do-While문)

 

 

반복문
(do ~ while)

do {
	 실행구문;
}while(조건식);

 do-while문은 조건식에 의해 반복 실행한다는 점은 while문과 동일하다.

경우에 따라서 블록 내부의 실행문을 우선 실행시키고 실행 결과에 따라 반복 실행을 계속할지 결정하는 경우에 

사용한다. 즉 do-while문은 실행문을  적어도 한 번은 실행시킨다.

 

public class DowhileEx {

	public static void main(String[] args) {
		int cnt =0;
		do {
			cnt++;
			System.out.println(cnt);
		}while(cnt < 10);	
	}
}

do-while문이 처음 실행되면 우선 do블록 안에 있는 실행문을 우선 실행한다.  실행문이 모두 실행되면 조건식을 평가하는데 그 결과가 참(true)이면 다시 반복 실행을 하고 , 조건식이 false(거짓)이면 do-while문을 종료한다.

 

코드를 실행하면 우선 do블록 안에 있는 실행문이 실행되서 cnt를 1 증가시킨다. 그 후 cnt를 출력하고 조건식으로가서 참인지 거짓인지 판단한다. 이렇게 조건식이 9가 될 때까지 반복 실행하고 10이 되면 조건식이 거짓(false)이 되므로 do-while문을 종료한다.

 

 

'JAVA' 카테고리의 다른 글

[JAVA] 데이터 타입 (배열)  (0) 2020.08.31
[JAVA] 데이터 타입  (0) 2020.08.31
[JAVA] 조건문과 반복문(4) - 구구단 / 별 찍기  (0) 2020.08.29
[JAVA] 조건문과 반복문 (3)  (0) 2020.08.29
[JAVA] 조건문과 반복문 (3)  (0) 2020.08.29

중첩 for문)

1. 구구단

for문은 또 다른 for문을 내포할 수 있는데 이것을 중첩 for문이라고 한다.

중첩 for문은 바깥쪽 for문이 한 번 실행될 때마다 중첩된 for문은 조건식만큼 반복해서 돌다 다시

바깥쪽 for문으로 돌아간다.

 

public class gugudan {

	public static void main(String[] args) {	
		for(int i=2; i<=9; i++) {
			for(int j=1; j<=9; j++) {
				System.out.println(i + " * " + j + " = " + (i*j));
			}
			System.out.println();		
		}
	}

}

 

바깥쪽 for문이 한 번 실행할 때마다 중첩 for문은 

i가 1에서 9까지 총 9번 반복 실행한다.

(i * 1, i * 2, i * 3, i * 4 .... i * 9)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. 별 찍기

구구단과 마찬가지로 중첩 for문을 이용하여 별을 찍을 수 있다.

public class StarEx{

	public static void main(String[] args) {
	
		for(int i=1; i<=5; i++) {
			for(int j=1; j<=i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

 

'JAVA' 카테고리의 다른 글

[JAVA] 데이터 타입  (0) 2020.08.31
[JAVA] 조건문과 반복문 (5)  (0) 2020.08.29
[JAVA] 조건문과 반복문 (3)  (0) 2020.08.29
[JAVA] 조건문과 반복문 (3)  (0) 2020.08.29
[JAVA] 조건문과 반복문 (2)  (0) 2020.08.29

+ Recent posts