10월 11일 수업내용

안효빈·2022년 10월 11일
0

2일차 자바 복습

배열

1차원 배열

  • 인덱스 번호는 0부터 사용한다.
		// 1차원 배열
		// 같은 자료형을 한곳에 모아놓은것
		int[] num = new int[5];
		int[] num2 = {1,2,3,4,5};		
		char[] ch = {'a','b','c'};
		boolean[] bl = {true,false};
		String[] str = {"dk", "djdkdj"};
		
		num2[2] = 0;
		
		for(int a:num2) {
			System.out.println("num2 배열 출력: " + a);
		}
		
		int count = 1;
		for(int i = 0; i < num.length; i++) {
//			num[i] = 2*i + 1;
			num[i] = count;
			count += 2;
		}
		
		for(int a:num) {
			System.out.println("num 배열 출력: " + a);
		}

배열의 출력

		System.out.println(Arrays.toString(num)); //[1, 3, 5, 7, 9]
		System.out.println(Arrays.toString(ch)); //[a, b, c]
		System.out.println(ch); //abc

이차원배열

int[][] score = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
		
		System.out.println(score[0][1]);//2
		System.out.println(score[1][2]);//6
		System.out.println(Arrays.toString(score[0]));//[1, 2, 3]
		System.out.println(Arrays.toString(score));//[[I@2401f4c3, [I@7637f22, [I@4926097b]
		
		System.out.println(score.length);//4
		
		for(int i = 0; i < score.length; i++) {
			for(int j = 0; j < score.length; j++) {
				System.out.println(score[i][j]);//1,2,3,Exception...
			}
		}



length를 조심해서 써야 하는 이유

int[][] score = {{1,2,3,4,5},{4,5,6,4,5},{7,8,9,4,5},{10,11,12,4,5}};

for(int i = 0; i < 4; i++) {
			for(int t = 0; t < 5; t++) {
				if(t == 5) System.out.print(score[i][t]); else System.out.print(score[i][t]+"\t");
			}
			if(i == 3) System.out.println(); else System.out.println("\n\n");
		}
		
		
		System.out.println(score.length); //행의 길이 ==> 4
		System.out.println(score[2].length);//해당 행의 길이 ==> 5

행과 열의 길이가 다를 수 있음

이차원배열을 이용한 점수계산

//5행 3열 배열에 점수 넣기
//5명의 국어, 영어, 컴퓨터 점수

		int[][] score = 
			{ //5행 3열의 2차원배열 전부 랜덤
			 {(int) (Math.random()*100+1), (int) (Math.random()*100+1), (int) (Math.random()*100+1)}
			,{(int) (Math.random()*100+1), (int) (Math.random()*100+1), (int) (Math.random()*100+1)}
			,{(int) (Math.random()*100+1), (int) (Math.random()*100+1), (int) (Math.random()*100+1)}
			,{(int) (Math.random()*100+1), (int) (Math.random()*100+1), (int) (Math.random()*100+1)}
			,{(int) (Math.random()*100+1), (int) (Math.random()*100+1), (int) (Math.random()*100+1)}
			};
		
		
		System.out.println("번호\t국어\t영어\t컴퓨터\t총점\t평균");
		
		
		System.out.println("---------------------------------------------");
		
		
		
		//각 학생별 점수 출력
		for(int i = 0; i < score.length; i++) {
			int sum = 0;
			double avr = 0;
			System.out.print((i+1)+"\t");
			for(int t = 0; t < score[i].length; t++) {
				System.out.print(score[i][t] + "\t");
				sum += score[i][t];
			}
			avr = (double)sum/3;
			System.out.print(sum + "\t");
			System.out.printf("%.1f", avr);
			System.out.println();
		}
		
		
		
		System.out.println("---------------------------------------------");
		
		
		
		//과목별총점출력
		int sum1 = 0;
		System.out.print("총점\t");
		
		for(int i = 0; i < score[0].length; i++) {
			for(int t = 0; t < score.length; t++) {
				
				sum1 += score[t][i];
			}
			System.out.print(sum1 + "\t");
			sum1 = 0;
			
		}
		
		
		//과목별 평균점 출력
		double avr1 = 0;
		System.out.print("\n평균\t");
		for(int i = 0; i < score[0].length; i++) {
			for(int t = 0; t < score.length; t++) {
				sum1 += score[t][i];
			}
			avr1 = (double)sum1/score.length;
			System.out.printf("%.1f", avr1);
			System.out.print("\t");
			avr1 = 0;
			sum1 = 0;
		}

출력

강사님은 korSum, engSum 이런 식으로 각각의 변수를 만드시고 포문 갯수를 하나 줄이심


버블정렬

int[] arr = {0,5,2};
		
		
		int count = 0;
		for(int i = 0; i < arr.length-1; i++) {
			boolean chg = false;
			for(int j = 0; j < arr.length-i-1; j++) {
				if(arr[j] > arr[j+1]) {
					int a;
					a = arr[j+1];
					arr[j+1] = arr[j];
					arr[j] = a;
					chg = true;
					count++;
				}
			}
			if(!chg) {
				break;
			}
		}
		
		System.out.println(Arrays.toString(arr));
		System.out.println(count);

값을 뒤바꿀때 처음 대입받는 쪽은 그 값이 사라지므로

새로 변수를 하나 만들어서 거기에 빼두고

나중에 다시 대입하는 식으로 살려낼 수 있다.


생성자 활용

생성자 오버라이딩

profile
다들 화이팅

0개의 댓글