JAVA-06

JAVA 06

여러가지 배열 문제

10칸짜리 빈 배열 만들고 1부터 10까지 채워넣은 뒤 배열의 각 방에 있는 값들 출력하기

int [] arr1 = new int [10];
		for (int i = 0; i < arr1.length; i++) {
			arr1[i] = i+1;
			System.out.println(arr1[i]);
		}

10칸짜리 빈 배열 만들고 10부터 1까지 채워넣은 뒤 배열의 각 방에 있는 값들 출력하기

int [] arr2 = new int[10];
		for (int i = 0; i < arr2.length; i++) {
			arr2[i] = 10 - i;
			System.out.println(arr2[i]);
		}

사용자에게 5개의 정수 입력받아서 (1,2,3,4,5) 다음과 같이 출력하기

예시

//1번째 정수 : 1
//2번째 정수 : 2 ....
//총합 : 15

풀이

//		정수 5개의 공간을 만든다.
		int [] arr3 = new int[5];
//		결과를 출력할 공간을 만든다.
		int result = 0;
//		처리부분 반복을 따로 만든다.
		for (int i = 0; i < arr3.length; i++) {
			System.out.println(i+1+"번째 정수를 입력하세요 : ");
//		배열의 길이 만큼 반복문을 실행시켜서 배열마다 사용자가 입력한 정수를 담는다.
			arr3[i] = sc.nextInt();
//		담긴 값들을 result에서 누적연산자를 이용하여 합을 구한다.
			result += arr3[i];
		}
//		출력부분을 따로 만든다.
		for (int i = 0; i < arr3.length; i++) {
//			배열에 입력된 값을 출력한다.
			System.out.println((i+1)+"번째 정수 :  " + arr3[i]);
		}
//		result에 입력된 값을 출력한다.
		System.out.println("총합 : " + result);

국어점수, 영어점수, 수학점수 입력받아서 총점과 평균점수 출력하기

//		과목만큼 점수를 입력받고 과목만큼 나누어 평균을 구한다., 과목도 구분해서 출력해야한다, 배열에 담자
		String [] subject = {"국어", "영어", "수학"};
//		과목 수만큼 점수배열공간도 만들어 두자
		int [] score = new int[subject.length];
//		총점을 이용하여 평균을 구하니 총점을 담을 변수도 초기화한다.
		int sum = 0;
//		과목 수 만큼 반복문을 돌려서 사용자에게 숫자를 입력받는다.
		for (int i = 0; i < subject.length; i++) {
//		입력부분, 처리부분
			System.out.println(subject[i] + "점수를 입력하세요. : ");
			score[i] = sc.nextInt();
//			총점도 바로 구할 수 있다.
			sum += score[i];
		}
//	   사용자에게 받은 값을 활용하여 점수를 출력한다. 출력 부분 
		for (int i = 0; i < subject.length; i++) {
//	 score배열에 담긴 값을 출력하자
			System.out.println(subject[i] + "점수 : " + score[i]+"점");
		}
//	 총점을 출력한다.
		System.out.println("총점 : " + sum+"점"); 
//		총점과 과목의 수를 이용하여 평균을 출력한다.
		System.out.printf("평균 : %.1f점",(float)(sum) / subject.length); 

2차원 배열

  • 배열 안에 배열이 있는 형태

2차원 배열 선언

자료형[][] 배열명 = {
		{값1, 값2, ...},
		{값3, 값4, ...},
		...
	};
  • 자료형[ ][ ] 배열명 = new 자료형 [행수][열수];

2차원 배열의 길이

  • 2차원 배열명.length : 행의 개수
  • 2차원 배열명[행번호].length : 행에 만들어져 있는 소배열의 길이
int [][] arrNumber = {
	{1,2,3},
    {4,5,6,7}
};
System.out.println(arrNumber.length); 
//행의 갯수인 2를 출력한다.
System.out.println(arrNumber[0].length);
//열의 갯수인 3을 출력한다.
System.out.println(arrNumber[1].length);
//열의 갯수인 4를 출력한다.

2중 for문(nested for문)

  • for문 안에 for문이 있는 형태
    바깥쪽에 있는 i for문은 다음 반복으로 넘어가기 위해서
    안쪽에 있는 수행할 문장들을 한번씩 다 마쳐야 한다.
    안에 있는 수행할 문장중에 j for문이 있으므로, 그 j for문이
    완벽히 모두 완료되어야 i for문 입장에서는 반복시 수행할 문장을
    마친것이 되고, 그 이후에야 다음 반복으로 넘어갈 수 있게된다.
    따라서 가장 안쪽에 있는 문장은 (i for문 반복횟수)*(j for문 반복횟수)
    만큼 수행된다.
package day06;

public class ArrTest {
	public static void main(String[] args) {
		int [][]arrData = {
				{10,20,30},
				{40,50,60}
		};
//		 i는 행의 개수만큼 2를 반복한다., j가 한번 반복하고 j의 바디를 나와야 i증감식이 작동하여 다음 반복을 실행한다.
		for (int i = 0; i < arrData.length; i++) {
//			j는 열의 갯수만큼 반복한다.
			for (int j = 0; j < arrData[i].length; j++) {
//				다음 데이터를 출력하면 10,20,30,40,50,60 순으로 출력한다.
				System.out.println(arrData[i][j]);
			}
		}
		
	}
}

위의 작동은 다음과 같다

i		j
0		0 ``````````` 첫번째 동작
0		1 ``````````` 두번째 동작
0		2 ``````````` 세번째 동작, 완료 후 i 증가
1		0 ``````````` 네번째 동작
1		1 ``````````` 다섯번째 동작
1		2 ``````````` 여섯번째 동작

좋은 웹페이지 즐겨찾기