상세 컨텐츠

본문 제목

2020-02-28 [Day-16] 자바 () 혼공자(객체배열, 배열복사, 향상된 포문)

Algorithm

by 개발성훈 2020. 2. 28. 16:49

본문

class Main {
	public static void main(String[] args) {
		
		int[] oldA = {1, 2, 3,};
		int[] newA = new int[5];
		newA[3] = 4;
		newA[4] = 5;
		
		
		for(int i = 0; i < oldA.length; i++){
			newA[i] = oldA[i];
		}
		
		for(int i = 0; i < newA.length; i++){
		System.out.print(newA[i] + ", ");				
		}
		
	}
}

배열의 복사 : 전에 저장되있던 배열의 값을 for문을 이용해 복사해 가져온다 
3개를 저장하던 oldA 배열에서 5개를 저장할 수 있는 newA 배열로 값을 가져오는 것 

==============================================================



class Main {
	public static void main(String[] args) {
		
		String[] oldA = {"스윙칩", "포카칩", "감자칩"};
		String[] newA = new String[5];
		newA[0] = "오이칩";
		newA[1] = "당근칩";
		newA[2] = "채소칩";
		newA[3] = "배추칩";
		newA[4] = "호박칩";
		System.out.println(newA[0]);
		System.out.println(newA[1]);
		System.out.println(newA[2]);
		System.out.println(newA[3]);
		System.out.println(newA[4]);
		System.out.println( );
		System.arraycopy(oldA, 0, newA, 0, oldA.length);
		
		for(int i = 0; i < newA.length; i++){
			System.out.println(newA[i] + ", ");
		}
	}
}
객체타입배열을 복사하는 법. 출력 메소드가 다르다.
System.out.println => Systme.arraycopy 로 바뀐다

값이 저장되이있던 newA 변수의배열에 oldA의 3개의 값을 복사해 옴기면 
기존에 있던 newA의 3개의 값은 사라지고 새롭게 복사된 값이 들어온다.

==============================================================

 

 

 

class Main {
	public static void main(String[] args) {
		int[] score = {95, 71, 84, 93, 87 };
		
		int sum = 0;
		
		for(int scores : score){
			sum += scores;
		}
		System.out.println("점수 총합 : " + sum);
		
		double num = (double)sum / score.length;
		System.out.println("점수 총합 : " + num);
	}
}
배열이나 컬렉션을 좀 더 쉽게처리하기위해 향상된 for문을 사용한다.
for문은 실행하기위해 루프카운터 변수와 증감식을 사용하지않는다.
for문이 처음실행할 떄 배열(1)에서 가져올 첫 번째 값이 존재하는지 평가합니다.
가져올 값이 존재하면 해당 값을 변수(2)에 저장합니다.
블록 내부의 실행문(3)이 모두 실행되면 다시 루프를돌아 배열(1)에서 가져올 다음 값이
존재하는지 평가하고 값이 있다면 다시 2-3-1순서로 루프를 진행하고 가져올 항목이 
없으면 for문이 종료됩니다.

따라서 for문의 반복 횟수는 배열의 항목 수가 됩니다.

==============================================================

 

import java.util.Scanner;

class Main {
  public static void main(String[] args) {


    boolean run = true;
    int studentNum = 0;
    int[] scores = null;
    Scanner Scanner = new Scanner(System.in);

    while(run){
      System.out.println("---------------------------------------------------");
      System.out.println("1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료");
      System.out.println("---------------------------------------------------");
      System.out.println("선택=>");

      int selectNo = Integer.parseInt(Scanner.nextLine());

      if(selectNo == 1) {
        System.out.print("학생수 =>");
        studentNum = Integer.parseInt(Scanner.nextLine());
        scores = new int[studentNum];
      } else if(selectNo == 2) {
        for(int i = 0; i < scores.length; i++){
          System.out.print("scores[" + i + "] >");
          scores[i] = Integer.parseInt(Scanner.nextLine());
        }
      } else if(selectNo == 3) {
        for(int i = 0; i< scores.length; i++){
          System.out.println("score[" + i + "]:" + scores[i]);
        }
      } else if(selectNo == 4) {
        int max = 0;
        int sum = 0;
        double avg = 0;
        for(int i =0; i < scores.length; i++){
          max = (max < scores[i]) ? scores[i] : max;
          sum += scores[i];
        }
        avg = (double) sum / studentNum;
        System.out.println("최고 점수 : " + max);
        System.out.println("평균 점수 : " + avg);

      } else if(selectNo == 5) {
        run = false;
      }

    }
    System.out.println("프로그램 종료");

  }
}
 Scanner 활용한 키보드로부터 학생 수와 각 학생들의 점수를 입력받아서
  최고점수와 평균점수를 구하는 프로그램이다.

 

 

관련글 더보기