📚 Study/Java

JAVA :: Test095_배열과 난수 처리(Random 클래스)

bono-hye 2023. 9. 12. 00:03

○ 실습

사용자로부터 임의의 정수를 입력받아

그 수 만큼 난수 (1~100)를 발생시켜 배열에 담고 배열에 담겨있는 데이터들 중

가장 큰 값과 가장 작은 값을 선택하여

결과를 출력하는 프로그램을 구현한다.

 

실행 예)

발생시킬 난수의 갯수 입력 : 10

50 7 24 81 72 45 61 38 1 99 → 무작위로 발생한 정수들...

(int[] arr = {50 7 24 81 72 45 61 38 1 99} → 배열에 담아내기(배열 구성))

가장 큰 값 : 99, 가장 작은 수 : 1

계속하려면 아무 키나 누르세요...

import java.util.Scanner;
import java.util.Random;

public class Test095
{
	public static void main(String[] args)
	{
		// Scanner 인스턴스 생성
		Scanner sc = new Scanner(System.in);
		
		// 주요 변수 선언
		int size;				//-- 사용자의 입력값을 담아낼 변수

		// 안내 메세지 출력
		System.out.print("발생시킬 난수의 갯수 입력 : ");
		size = sc.nextInt();

		// 입력받은 size 만큼의 배열방 만들기(배열 길이)
		// (배열 선언 및 메모리 할당)
		int[] arr = new int[size];

		// 무작위 정수(난수)를 발생시키기 위해서는
		// 난수 발생 전용 객체가 필요하다.
		// → 『java.util.Random』
		Random rd = new Random();
		//-- Random 인스턴스 생성

		// ※ Random 클래스의 『nextInt()』 메소드
		//	  0 ~ 매개변수로 넘겨받은 정수 n~1 까지의 수 중
		//	  무작위 정수(난수) 1개를 발생시킨다.

		//	  ex) rd.nextInt(10);	//-- 0 ~ 9 중 난수 1개 발생

		// 테스트(확인)
		//System.out.println("발생한 난수 : " +  rd.nextInt(10));
		//-- 0 ~ 9 까지의 범위 내에서 무작위 정수 한 개 발생~!!!

		// 배열 구성
		//for (int i=0;i<arr.lnegth ;i++ )
		for (int i=0;i<size ;i++ )
		{
			//rd.nextInt(101);
			//-- 0 ~ 100 중 1개

			//rd.nextInt(100);
			//-- 0 ~ 99 중 1개

			arr[i] = rd.nextInt(100) + 1;
			//       ---------------
			//            0 ~ 99
			//       --------------------
			//            1 ~ 100

		}

		// 테스트 → 구성된 배열의 전체 요소 출력
		for (int i=0;i<arr.length ;i++ )
		{
			System.out.printf("%4d", arr[i]);
		}
		System.out.println();
		//--==> 발생시킬 난수의 갯수 입력 : 10		
		//      56  63  42  13  72   6  58   9  73  68
		//		계속하려면 아무 키나 누르십시오 . . .
		//--==>> 발생시킬 난수의 갯수 입력 : 8
		//		 50  82  59  93  65   7   4  58
		//		 계속하려면 아무 키나 누르십시오 . . .

		//---------------------------------------------------여기까지 수행하면 배열 구성 완료~!!

		// 가장 작은 값, 가장 큰 값 출력~!!!

		int min, max;     //-- 최소값, 최대값 변수 생성

		min=max=arr[0];	  //-- 배열의 가장 앞에 있는 값이 최소값, 최대값이라 가정하고 구성

		for (int i=1;i<arr.length ;i++ )			//-- i=0에는 min, max 값이 들어있다고 가정하였으니 i=1 부터 비교
		{
			if (min>arr[i])							
			{
				min = arr[i]; 
			}
			if (max<arr[i])
			{
				max = arr[i];
			}

		}

		System.out.printf("가장 큰 값 → %d, 가장 작은 값 → %d\n",max, min );
		}
	}