카테고리 없음

Array 실습 두번째

달덩이>< 2022. 9. 28. 21:19

1.  length로 평균 구하기

package p01.basic;

public class ArrayBasic6 {

	public static void main(String[] args) {
		int[] scores = {95, 71, 84, 93, 87};  // 배열 초기값을 넣을 때 length에도 전체 갯수를 설정
		int sum = 0;
		
		for (int score : scores) {
			sum += score;
		}
		
		double average = (double) sum / scores.length;
		System.out.println("전체 합계 : " + sum);
		System.out.println("전체 평균 : " + average);

	}

}

 

  • 배열도 length를 이용하여 배열의 갯수를 알 수 있습니다.
  • 위의 코딩처럼 평균을 구하기위해서 sum/ scores.length;를 해주면 배열의 전체 갯수로 나누는 것이여서 평균을 구할 수 있습니다.

위 사진은 위 코딩의 결과를 Console 창에 나타낸 것이다.



2. 랜덤배열 원소 중에 최댓값 구하기 

package p01.basic;

// 배열 원소 중 최댓값 구하기
public class ArrayBasic7 {

	public static void main(String[] args) {
		double[] myList = new double[10];
		
		for (int i=0; i<myList.length; i++) {
			myList[i] = Math.random()*100;
		}
		
		for (double element : myList) {
			System.out.println(element);
		}
		
		double max = myList[0];
		for (int i=1; i<myList.length; i++) {
			if (myList[i] > max) {
				max = myList[i];
			}
		}

		System.out.println("max : " + max);
		
	}

}

 

  • 먼저 랜덤의 배열을 출력하기 위해 Math.random()을 사용해줍니다.
  • 그 다음 for 문과 if 문을 사용하여 myList의 배열의 전체 갯수 중에 배열의 숫자를 비교해 큰 쪽을 max로 해주고 다시 다음 숫자랑 비교를 해주는 코딩을 만들어줍니다.
  • 그러면 10개의 랜덤의 숫자를 다 비교하여 가장 큰 숫자를 구할 수 있습니다.

위 사진은 위 코딩의 결과를 Console 창에 나타낸 것이다.



3.  배열을 사용하여 원하는 달을 찾는 예제

package p01.basic;

import java.util.Scanner;

// 배열 사용해서 코딩 단순화(simplifying) 예제
public class ArrayBasic8 {

	public static void main(String[] args) {
		String[] months = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep" ,"Oct", "Nov", "Dec"};
				
		Scanner input = new Scanner(System.in);
		
		System.out.println("달력 숫자를 입력하세요 (1 ~12 사이 숫자)");
		int month = input.nextInt();
		
		System.out.println("이번 달은 " + months[month-1] + "입니다.");

	}

}

 

  • 먼저 moths라는 배열안에 1월부터 12월까지 넣어줍니다.
  • 그 다음 우리가 직접 console에 입력하여 원하는 달을 찾는 예제이므로 scanner를 사용해줍니다.
  • 마지막으로 println을 사용하여 출력을 해줍니다. (moth-1을 해주는 이유는 배열의 시작은 0부터 시작하기 때문입니다.)

위 사진은 위 코딩의 결과를 Console 창에 나타낸 것이다.



4. 배열을 사용하여 max값 구하기

package p01.practice;

// max 구하기
// 1. method parameter를 array를 사용하여 여러개의 값을 parameter로 넘길 수 있어
//    max method처럼 여러개의 숫자에 대하여 최대값을 구하는 여러 개의 메소드를 선언(method overloading)할 필요 없음
// 2. parameter로 배열과 유사한 다른 표기법=> '...' 사용한 표기법
//  - actual parameter로 배열을 사용해도 인식됨
//  - actual parameter로 primitive type을 여러개 가변적으로 넘겨도 인식됨

public class VarArgsDemo {

	public static void main(String[] args) {
		int a=1;
		int b=2;
		int c=3;
		int maxValue;
		
		int[] numbers = {1,2,3,5,12,15};
		
		maxValue = max (a,b);
		System.out.println("maxValue : " + maxValue);
		maxValue = max (a,b,c);
		System.out.println("maxValue : " + maxValue);
		maxValue = max(numbers);
		System.out.println("maxValue : " + maxValue);
		maxValue = max(15,24,46,77,99,120,45);
		System.out.println("maxValue : " + maxValue);
		

	}
	public static int max(int... num) {
		int result = 0;
		
		result = num[0];
		for(int i=1; i<num.length; i++) {
			if(num[i] > result) {
				result = num[i];
			}
			
		}
		return result;
	}

 

  • Array(배열)을 사용하면 여러개의 값을 parameter로 넘길 수 있습니다.
  • 먼저 위의 코딩에서 첫번째 maxValue = max (a,b); 은 a와 b중 큰 값을 출력합니다.
  • 그 다음 maxValue = max (a,b,c);에서는 a와 b와 c 중 큰 값을 출력합니다.
  • 그리고 세번째 max(numbers);에서는 numbers 배열에 있는 숫자 중에 가장 큰 값을 출력합니다.
  • 마지막 max(15,,24,46,77,99,120,45);에서는 가장 큰 숫자인 120이 출력이 됩니다.

위 사진은 위 코딩의 결과를 Console 창에 나타낸 것이다.


 


5. 배열값을 REVERS 하기

package p02.method_callbyreference.practice;

public class ArrayReverse {

	public static void main(String[] args) {
		int[] list = {1, 2, 3, 4, 5};
		
		System.out.print("reverse 하기 전: ");
		for (int i=0; i<list.length; i++) {
			System.out.print(list[i] + " ");
		}
		System.out.println();
		
		// stack에 있는 list의 값을 newList의 새로운 주소로 변경
		list = reverse(list);
		
		System.out.print("reverse 한 후: ");
		for (int i=0; i<list.length; i++) {
			System.out.print(list[i] + " ");
		}
	}
	
	// return type : array return
	public static int[] reverse(int[] list) {
		int[] newList = new int[list.length];
		
		for (int i=0; i<list.length; i++) {
			newList[i] = list[list.length - 1 - i];
		}
		
		
		return newList;
	}

}

 

  • 배열의 값들을 REVERS하기 위해서는 reverse method를 먼저 만들어줍니다.
  • reverse method 안에 for 문을 사용하여 list에 있는 배열을 역으로 나타나게 -1를 해줍니다.
  • 그리고나서 Stack에 있는 list값을 revers method에 있는 newList의 새로운 주소로 변경하고 println(list[i]);를 해주면 됩니다.

위 사진은 위 코딩의 결과를 Console 창에 나타낸 것이다.



5-1.배열값을 REVERS 하기2

package p02.method_callbyreference.practice;

public class ArrayReverse2 {

	public static void main(String[] args) {
		int[] list = {1, 2, 3, 4, 5};
		
		System.out.print("reverse 하기 전: ");
		for (int i=0; i<list.length; i++) {
			System.out.print(list[i] + " ");
		}
		System.out.println();
		
		// stack에 있는 list의 값을 newList의 새로운 주소로 변경
		reverse(list);
		
		System.out.print("reverse 한 후: ");
		for (int i=0; i<list.length; i++) {
			System.out.print(list[i] + " ");
		}
	}
	
	// return type : array return
	public static void reverse(int[] list) {
		int[] newList = new int[list.length];
		
		for (int i=0; i<list.length; i++) {
			newList[i] = list[list.length - 1 - i];
		}
		
		
//		return newList;
		for (int i=0; i<list.length; i++) {
			list[i] = newList[i];
		}
	}

}

 

  • 위의 코딩은 5번이랑 같은 문제이며 다른 방식으로 코딩한 결과입니다.
  • 5번 문제 코딩은 reverse method에 return newList를 해주었지만 위의 코딩은 중첩 for 문을 사용하였습니다.
  • 아래 사진과 같이 console에 출력되는 결과는 같습니다.

위 사진은 위 코딩의 결과를 Console 창에 나타낸 것이다.



오늘은 Array(배열)에 대한 공부를 하였습니다. 여러 숫자가 있는 경우나 결과를 산출할 때 좀 더 편하게 할 수 있습니다. 그래서 좀 더 공부를 하여 자신의 것으로 만들면 큰 도움이 될 것 같습니다. 다음 시간에는 2차원 배열에 대해서 실습해보겠습니다.감사합니다.^^

반응형