기초단계/JAVA

2022.11.16-3 JAVA 참조타입 3

춘핑이 2022. 11. 16. 17:17

5. 참조타입

5.9 배열복사

배열은 한번 생성하면 길이를 변경할 수 업삳. 더 많은 저장곤간이 필요하다면 더 큰 길이의 배열을 만들고 이전 배열로부터 항목들을 복사해야한다.
예를들어 3인배열의 항목을 길이 5인 배열로 다음과 같이 복사할수 있다.
{1,2,3} -> {1,2,3,0,0}
가장 기본적인 복사 방법은 for문을 이용해서 항목을 하나씩 읽고 새로운 배열에 저장하는 것이다.

//길이 3인배열
int[] oldintArray = {1, 2, 3};
//길이 5인 배열생성
int[] newintArray = new int[5];
//배열항목복사
for(int i =0; i < oldintArray.length; i++)
{
    newintArray[i] = oldintArray[i];
}
//배열출력
for(int j =0; j < newintArray.length; j++)
{
    System.out.print(newintArray[j] + ", ");
}

배열복사 더 간단한 방법 System의 arraycopy()메소드를 이용하면 한줄만 으로도 배열복사 가능
System.arraycopy(원본배열arr1 ,원본배열 복사 시작 인덱스0 , 새배열arr2 , 새배열 붙여넣기 시작인덱스0, 복사 항목수arr.length);

//길이3인 배열
String[] oldStrArray = {"java", "array", "copy"};
//길이 5인 배열 새로 생성
String[] newStrArray = new String[5];
System.arraycopy(oldStrArray, 0, newStrArray, 0, oldStrArray.length);
for(int i = 0; i < newStrArray.length; i++ )
{
    System.out.print(newStrArray[i] + ", ");
}

5.10 배열 항목 반복을 위한 향상된 for문

for (2타입변수 : 1배열({3실행문} 1배열에서 가저올 항목이 있을경우 2변수에 항목을 저장하고 3실행문을 실행한다.

//배열 변수 선언과 배열생성
int[] scores = {95,71,84,93,87};
//배열 항목 전체 합 구하기
int sum = 0;
for (int score : scores)
{
    sum = sum + score;
}
System.out.println("점수 총합 = " + sum); //430
//배열 항목 평균 구하기
double avg = (double) sum / scores.length;
System.out.println("점수 평균 = " + avg); //86.0

5.11 main()메소드의 String[] 매개변수 용도

main작성할때 public static void main(String[] args) ()안에 string들어가는 이유
외부에서 준 값을 받기 위해서 string[] 이필요햇던것임. 배열의 형태를 가지게 됨

if(args.length != 2)
{ 
    System.out.println("프로그램 입력값이 부족");
    System.exit(0);
}

String strNum1 = args[0];
String strNum2 = args[1];

int num1 = Integer.parseInt(strNum1);
int num2 = Integer.parseInt(strNum2);

int result = num1 + num2;
System.out.println(num1+ "+" + num2 + " = " + result);

5.12 확인 문제

주어진 배열 항목에서 최댓값을 출력하는 코드

int array[] = {1, 5, 3 , 8, 2};
int max = 0;
for (int i = 0; i < array.length; i++)
{
    if (array[i] > max)
    {
        max = array[i];
    }
}
System.out.println("최댓값: " + max);

주어진 배열 항목의 전체 합과 평균을 구해 출력하는 코드

int[][] array = {
        {95,86},
        {83,92,96},
        {78,83,93,87,88}
};
int totalsum = 0;

for (int i = 0; i < array.length; i ++)
{
    for(int j = 0; j < array[i].length; j++)
    {
        totalsum += array[i][j];
    }
}
System.out.println(totalsum);

double totalavg = (double) totalsum / array.length;
System.out.println(totalavg);

학생들의 점수를 분석하는 프로그램 키보드로부터 학생 수와 각 학생들의 점수를 입력받고 while 문과 scanner 메소드를 이용해서 최고점수 및 평균 점수를 출력하는 코드

Scanner sc = new Scanner(System.in);
int totalst = 0;
int[] scores = null;
int max = 0;
int totalsum = 0;

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

    int num = sc.nextInt();

    if(num == 1 )
    {
        System.out.print("학생수>");
        totalst = sc.nextInt();
        scores = new int[totalst];
    }
    else if(num == 2)
    {
        for (int i = 0; i < scores.length; i++)
        {
            System.out.print("scores[" + i + "]"+ ">");
            scores[i] = sc.nextInt();
        }
    }
    else if(num == 3)
    {
        for (int j = 0; j < scores.length; j++)
        {
            System.out.println("scores[" + j + "]"+ ":" + scores[j]);
        }
    }
    else if(num == 4)
    {
        for (int k = 0; k < scores.length; k++)
        {
            if (scores[k]> max)
            {
                max = scores[k];
            }
        }
        for (int l = 0; l < scores.length; l++)
        {
            totalsum += scores[l];
        }
        double avg = (double) totalsum / totalst;
        System.out.println("최고 점수: " + max);
        System.out.println("평균 점수: " + avg);
    }
    else if(num == 5)
    {
        System.out.println("프로그램 종료");
        break;
    }
}

2022.11.16 리뷰

가장 중요한 객체 지향 파트에 들어왔다.
마지막 문제를 정말 길지만 풀어냈을 때 아주 좋았다.
객체를 이용해서 푸는 것이 더 쉬운듯 안쉬운듯 알 수 없다.
c언어에 비해 문법이 너무 많아서 알아야 할 것이 많은게 힘들다.
오늘도 중요한 것은 꺾이지 않는 마음