쌍용교육(JAVA)/JAVA

쌍용교육 -JAVA 수업 5~6일차 Array 배열

구 승 2024. 4. 11. 17:08
package kr.s04.array;

public class ArrayMain01 {
	public static void main(String[] args) {
		//배열선언
		char[] ch; //char[]은 배열의 자료형
		//배열 생성	
		ch = new char[4];//4는 배열의 길이를 말함.(0123)순서
		//배열 초기화
		ch[0] = 'J';
		ch[1] = 'A';
		ch[2] = 'V';
		ch[3] = 'A';            
		
		
		//배열의 요소 출력
		System.out.println(ch[0]);
		System.out.println(ch[1]);
		System.out.println(ch[2]);
		System.out.println(ch[3]);
		System.out.println("===================");
		//반복문을 이용한 배열의 요소 출력
		for(int i=0;i<ch.length;i++) { //i<4 는 배열의 길이 (배열의 길이를 알고 있을 때)
									  //i<ch.length는 배열의 길이(배열의 길이를 모를 떄)
			System.out.println("ch["+i+"]:"+ch[i]);
		}
		
		//배열의 선언 및 생성
		int[] it = new int[6]; //위에서는 따로따로 여기선 한줄로 만듬
		
		//배열의 선언 및 생성(명시적 배열 생성), 초기화
		char[] ch2 = new char[] {'J','A','V','A'};
		
		//배열의 선언 및 생성(암시적 배열 생성), 초기화
		char[] ch3 = {'자','바'}; //new char[]를 생략
		
	}
}

J
A
V
A
===================
ch[0]:J
ch[1]:A
ch[2]:V
ch[3]:A

package kr.s04.array;

public class ArrayMain02 {
	public static void main(String[] args) {
		//정수형 배열 선언 및 생성
		//배열을 생성하면 배열의 요소로 기본값이 저장됨
		//정수형 배열은 0을 기본값으로 배열을 생성
		int[] array = new int[5];

		//반복문을 이용한 요소의 출력
		for(int i =0; i<array.length; i++) {
			System.out.println("array["+i+"]:"+array[i]);
		}
		System.out.println("========================");

		//배열의 요소 변경
		array[0] = 10;
		array[1] = 20;
		array[2] = 30;
		array[3] = 40;
		array[4] = 50;
		//없는 인덱스를 호출하면 컴파일은 되지만 실행시 오류 발생
		//array[5] = 60; //원래 없는 배열

		//반복문을 이용한 요소의 출력
				for(int i =0; i<array.length; i++) {
					System.out.println("array["+i+"]:"+array[i]);
				}
	}
}

array[0]:0
array[1]:0
array[2]:0
array[3]:0
array[4]:0
========================
array[0]:10
array[1]:20
array[2]:30
array[3]:40
array[4]:50

package kr.s04.array;

public class ArrayMain03 {
	public static void main(String[] args) {
		//배열 선언 및 생성(암시적 배열 생성), 초기화
		int[] array = {10,20,30,40,50}; //int[]를 썼기 때문에 뒤에오는 자료형들은 통일되어야됨.
			//배열명
		// int array[] 도 가능하다.
		//반복문을 이용한 배열의 요소 출력
		for(int i =0 ; i<array.length; i++) {
			System.out.print(array[i]+"\\t");
		}
		System.out.println("\\n=====================================================================");
		
		//확장 for문을 이용한 배열의 요소 출력
		for(int num: array) {
			System.out.print(num + "\\t");
		}
	}
}

10	20	30	40	50	
=====================================================================
10	20	30	40	50
package kr.s04.array;

public class ArrayMain04 {
	public static void main(String[] args) {
		int sum = 0; //총점을 저장하는 변수
		float average = 0.0f; //평균을 저장하는 변수
		
		//배열 선언, 생성, 초기화
		int[] score = {100,88,88,100,90};// length = 5
	
		//총점 구하기
		for(int i=0;i<score.length;i++) {
			//누적
			sum +=score[i];
			
		}
		//평균 구하기
		average = sum/(float)score.length; //float를 써줘야지 평균을 구할 때 소수점이 올바르게 나옴. 
		
		System.out.printf("총점:%d%n",sum);
		System.out.printf("평균:%.2f",average);
			
		
		
	}
}
    
총점:466
평균:93.20
package kr.s04.array;

public class ArrayMain05 {
	public static void main(String[] args) {
		int[] score = {79,88,91,33,100,55,95};
		int max = score[0];//최대값이 저장되는 변수
		int min = score[0];//최소값이 저장되는 변수

		for (int i=1;i<score.length;i++) {
			//최대값 구하기
			if (score[i] > max) {
				max = score[i];

			}
			//최소값 구하기
			if (score[i] < min) {
				min = score[i];
			}
		}//end of for
		//최대값과 최소값 출력
		System.out.println("최대값 : "+ max);
		System.out.println("최소값 : "+ min);
	}//end of main
}

최대값 : 100
최소값 : 33

package kr.s04.array;

public class ArrayMain06 {
	public static void main(String[] args) {
		//문자열 배열 선언 및 생성
		String[] array = new String[3];
		
		array[0] = "Java";
		array[1] = "Oracle";
		array[2] = "JSP";
		
		//반복문을 이용한 배열의 요소 출력
		for (int i =0; i <array.length; i++) {
			System.out.println(array[i]);
			
		}
		
		System.out.println("===============================");
		
		//확장 for문을 이용한 배열의 요소 출력
		for(String str: array) {
			System.out.println(str);
		}
	}
}

Java
Oracle
JSP
===============================
Java
Oracle
JSP

package kr.s04.array;

public class ArrayMain07 {
	public static void main(String[] args) {
		
		java.util.Scanner input =
				new java.util.Scanner(System.in);
		
		String[] course = {"국어","영어","수학"};
		int[] score = new int[course.length];//0:국어,1:영어,2:수학
		
		int sum = 0;
		float avg = 0.0f;
		
		//반복문을 이용해서 입력 처리
		for(int i = 0 ; i < score.length; i++) {
			//입력값을 0~100만 가능하게 조건 체크
			do {
				System.out.print(course[i]+ "="  );
				score[i] = input.nextInt();
				
			}while(score[i] < 0 || score[i] > 100);
			
			//총점 구하기
			sum +=score[i];
		}
		//평균 구하기
		avg = sum/(float)course.length;
		
		//과목의 점수 출력
		for(int i=0; i<score.length;i++) {
			System.out.printf("%s = %d%n", course[i],score[i]);
		}
		
		System.out.printf("총점:%d%n",sum);
		System.out.printf("평균:%.2f",avg);
		
		
		
		input.close();
	}
}

국어=80
영어=70
수학=50
국어 = 80
영어 = 70
수학 = 50
총점:200
평균:66.67
package kr.s04.array;

public class ArrayMain08 {
	public static void main(String[] args) {
		//클래스를 실행할 떄 외부에서 데이터 전달
		// run as + run configuration > arguments > 입력하면 들어간다.
		//System.out.println(args [0]);
		//System.out.println(args [1]);
	
		
		if(args.length>0) {
			for(int i =0 ; i < args.length; i ++) {
				System.out.println(i+ ":" + args[i]);
			}
		}else {
			System.out.println("입력한 내용이 없습니다.");
		}
	}
}
입력한 내용이 없습니다.

package kr.s04.array;

public class ArrayMain09 {
	public static void main(String[] args) {
		// main 의 데이터는 두 개의 정수
		// main 의 인자로 데이터를 전달하면 전달한 데이터의 자료형은
		// 모두 String 으로 인식하기 떄문에 +연산이 되지않고
		// 문자열 연결이 된다.
		System.out.println(args[0] + args[1]);
		System.out.println("-----------------------");
		
		//자료형을 String > int 로 바꾸어 연산이 가능하게 하는 방법
		int num = Integer.parseInt(args[0]);
		int num2 = Integer.parseInt(args[1]);
		
		System.out.println("합계 : "+ (num + num2));
		
		
		
		
		
		
		
		
		
		
	}
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
	at kr.s04.array.ArrayMain09.main(ArrayMain09.java:9)

package kr.s04.array;

public class ArrayMain10 {
	public static void main(String[] args) {
		/*
		 * 1) 10,20,30,40,50 을 초기값으로 갖는 1차원 배열 test
		 * 이름으로 선언 , 생성 , 초기화 하시오.
		 * 2) 반복문을 이용해서 출력하시오.
		 * 3) 확장 for문을 이용해서 출력하시오
		 * 4) 인덱스 3에 데이터를 100으로 변경하시오
		 * 5) 마지막 요소의 값을 200으로 변경하시오
		 * 6) 반복문을 사용하여 모든요소의 값을 0으로 초기화 하시오 .
		 * 7) 홀수인덱스에 10 , 짝수 인데스에 20을 저장 
		 * 8) 모든 요소의 총합과 평균(총합을 요소의 수로 나눔)을 구하고 출력하시오.
		 */

		// 1)
		// 명시적 배열 생성 
		// int[] test = new int[] {10,20,30,40,50];
		// 암시적 배열 생성
		int test[] = {10,20,30,40,50};
		// 2)
		for(int i = 0; i < test.length; i++) {
			System.out.print(test[i] + "\\t");
		}
		System.out.println();
		// 3)
		for(int num : test) {
			System.out.print(num + "\\t");
		}
		System.out.println();
		// 4)
		test[3] = 100;
		// 5)
		test[test.length - 1] = 200;
		for(int i = 0; i < 5; i++) {
			System.out.print(test[i] + "\\t");
		}
		System.out.println();
		// 6)
		for(int i = 0; i < 5; i++) {
			test[i] = 0;
			System.out.print(test[i] + "\\t");
		}
		System.out.println();
		// 7)
		for(int i = 0; i < test.length; i++) {
			if(i%2==0) {
				test[i] = 20;}
			else {test[i] = 10;}
			System.out.print(test[i] + "\\t");
		}
		System.out.println();
		// 8)
		int sum = 0;
		float avg = 0.0f;
		for(int i = 0 ; i < test.length ; i++) {
			sum += test[i];
		}
		avg = sum / (float)test.length;
		System.out.printf("총합 : %d%n평균 : %.2f", sum, avg);
	}
}
10	20	30	40	50	
10	20	30	40	50	
10	20	30	100	200	
0	0	0	0	0	
20	10	20	10	20	
총합 : 80
평균 : 16.00
package kr.s04.array;

public class ArrayMain11 {
	public static void main(String[] args) {
		/*
		 * [실습]
		 * double 형인 배열의 모든 요소의 합과 평균을 구하는 프로그램을 작성하시오
		 * 
		 * [입력 예시]
		 * 요소의 수 > 3
		 * a[0] = 2.2
		 * a[1] = 2.2
		 * a[2] = 3.3
		 * 
		 * [출력 예시]
		 * 모든 요소의 합 : 7.7 System.out.println()
		 * 모든 요소의 편균 : 2.57 System.out.prinf()
		 * 
		 */
		java.util.Scanner input =
				new java.util.Scanner(System.in);
		System.out.print("요소의 수 : ");
		int num = input.nextInt();
		double sum = 0;
		double a[] = new double[num];
		
		for(int i = 0; i < a.length; i++) {
		System.out.print("a["+i+"] : ");
		double b = input.nextDouble();
		a[i] = b;
		sum += a[i];
		}
		System.out.println("모든 요소의 합 : "+sum);
		System.out.printf("모든 요소의 평균 : %.2f", (sum / a.length));
		input.close();
	}
}
요소의 수 : 3
a[0] : 2.2
a[1] : 2
a[2] : 2.3
모든 요소의 합 : 6.5
모든 요소의 평균 : 2.17
package kr.s04.array;

public class ArrayMain12 {
	public static void main(String[] args) {
		/*
		 * [실습]
		 * 단을 입력 받아서 1~9까지 곱하고 결과값을 배열에 저장.
		 * 배열에 저장 된 값을 읽어서 구구단 출력 형식 (2*1=2)로 출력하시오.
		 * 
		 * [입력 예시]
		 * 단 입력 : 2
		 * 
		 * [출력 예시]
		 * 2단
		 * -------
		 * 2*1 = 2
		 * 2*2 = 4
		 */
		java.util.Scanner input =
				new java.util.Scanner(System.in);
		System.out.print("단 입력 : ");
		int dan = input.nextInt();

		//연산의 결과값을 저장 할 배열 선언 및 생성
		int [] array = new int[9];
		
		System.out.println(dan + "단");
		System.out.println("-------");
		
		for(int i = 0 ; i < array.length; i++) {
				array[i] = dan * (i+1);
				System.out.printf("%d*%d = %d%n",dan,i+1 ,array[i]);
			}
			
		

		input.close();
	}
}
단 입력 : 2
2단
-------
2*1 = 2
2*2 = 4
2*3 = 6
2*4 = 8
2*5 = 10
2*6 = 12
2*7 = 14
2*8 = 16
2*9 = 18

package kr.s04.array;

public class ArraySecondMain01 {
	public static void main(String[] args) {
		//2차원 배열 선언
		int[][] test;
		//2차원 배열 생성 (2행 3열)
		test = new int[2][3];

		//2차원 배열 초기화
		 //행번호 열번호
		test[0][0] = 100;
		test[0][1] = 200;
		test[0][2] = 300;

		test[1][0] = 400;
		test[1][1] = 500;
		test[1][2] = 600;

		System.out.println(test[0][0]);
		System.out.println(test[0][1]);
		System.out.println(test[0][2]);
		
		System.out.println(test[1][0]);
		System.out.println(test[1][1]);
		System.out.println(test[1][2]);
		System.out.println("--------------------");
		//반복문을 이용한 배열의 요소 출력
		//i가 행번호
		for(int i =0 ; i < test.length; i++) {
			//j가 열번호
			for(int j =0 ; j < test[i].length; j++) {
				System.out.println("test["+i+"[["+j+"]:" + test[i][j]);
			}	
		}//end of for
		System.out.println("--------------------");
		// 2차원 배열 선언 및 생성
		int test2[][] = new int[3][3];
		
		// 명시적 2차원배열 생성
		int [][]test3 = new int[][] {{10,20,30},
									{40,50,60}
									};
		
		// 암시적 2차원배열 생성
		int [][]test4 = {
				{10,20,30},
				{40,50,60}};
		
	}
}
100
200
300
400
500
600
--------------------
test[0[[0]:100
test[0[[1]:200
test[0[[2]:300
test[1[[0]:400
test[1[[1]:500
test[1[[2]:600
--------------------

package kr.s04.array;

public class ArraySecondMain02 {
	public static void main(String[] args) {
		int[][] score = {
				{99,98,97},
				{89,72,88},
				{99,97,92},
				{81,92,99},
				{99,90,79}};
		

		System.out.println("번호 국어 영어 수학 총점 평균");
		System.out.println("--------------------");
		//행의 길이
		for(int i =0 ; i < score.length; i++) {
			int sum = 0;//총점
			//번호 출력
			System.out.print(" " + (i+1) +" ");
			//열의 길이
			for(int j =0 ; j < score[i].length; j++) {
				//총점 구하기
				sum += score[i][j];
				//과목 점수 구하기
			System.out.print(score[i][j] + " ");
			}
			//총점 출력하기
			System.out.println(sum + " "+ sum/score[i].length);
		}//end of for
	}
}
번호 국어 영어 수학 총점 평균
--------------------
 1 99 98 97 294 98
 2 89 72 88 249 83
 3 99 97 92 288 96
 4 81 92 99 272 90
 5 99 90 79 268 89

package kr.s04.array;

public class ArraySecondMain03 {
	public static void main(String[] args) {
		java.util.Scanner input = 
				new java.util.Scanner(System.in);
		//과목명
		String[] course = {"국어","영어","수학"};
		//인원수
		System.out.print("인원수:");
		int num = input.nextInt();
		
		                      //인원수    과목수
		                      //행의 길이  열의 길이
		int[][] score = new int[num][course.length];
		//총점을 저장하는 배열
		int[] sum = new int[num];
		//평균을 저장하는 배열
		float[] avg = new float[num];
		
		//성적을 입력받고 총점과 평균 구하기
		             //행의 길이
		for(int i=0;i<score.length;i++) {
			              //열의 길이
			for(int j=0;j<score[i].length;j++) {
				//성적을 입력 받음
				do {
					//과목명 출력
					System.out.print(course[j] + "=");
					score[i][j] = input.nextInt();
				}while(score[i][j] < 0 || score[i][j] > 100);
				//총점 구하기
				sum[i] += score[i][j];
			}//end of inner for
			//평균 구하기
			       // 총점          과목수
			avg[i] = sum[i] / (float)score[i].length;
			System.out.println();//단순 줄바꿈
		}//end of outer for
		
		//총점과 평균 출력
		            //인원수
		for(int i=0;i<num;i++) {
			System.out.println();//단순 줄바꿈
			System.out.printf("총점 = %d%n", sum[i]);
			System.out.printf("평균 = %.2f%n", avg[i]);
		}		
		input.close();
	}
}

인원수:3
국어=100
영어=70
수학=50

국어=70
영어=560
영어=60
수학=70

국어=100
영어=300
영어=500
영어=30
수학=50

총점 = 220
평균 = 73.33

총점 = 200
평균 = 66.67

총점 = 180
평균 = 60.00