[Java]/과제
083 - Java 과제 6 : 배열을 사용하여 사용자로부터 임의의 정수를 임의의 개수만큼 입력 받아, 입력 받은 수 중에서 가장 큰 수를 출력하는 프로그램
Jelly-fish
2023. 9. 5. 16:57
/*==========================
■■■ 배열 ■■■
- 배열의 선언과 초기화
- 배열의 기본적 활용
============================*/
// ○ 과제
// 사용자로부터 임의의 정수를 임의의 개수만큼 입력받아
// 입력받은 수 중에서 가장 큰 수를 출력하는 프로그램을 구현한다.
// 단, 배열을 활용하여 구현할 수 있도록 한다.
// 실행 예)
// 입력할 데이터의 개수 : 11
// 데이터 입력(공백 구분) : 45 11 26 35 66 97 50 2 123 10 7
// >> 가장 큰 수 → 123
// 계속하려면 아무 키나 누르세요...
import java.util.Scanner;
public class Test083
{
public static void main(String[] args)
{
// 1. 변수 선언****************************************************************************
Scanner sc = new Scanner(System.in);
int inputLength; // -->> 사용자가 입력할 데이터 개수를 입력받아서 저장하는 변수
int[] intArr; // -->> 사용자가 입력할 정수 데이터들을 각각의 요소에 받아 저장할 배열
int max = 0; // -->> 사용자가 입력한 정수 데이터들 중 최댓값을 저장할 변수
// 2. 사용자로부터 입력할 데이터 개수 값을 입력받는다.***********************************************
System.out.print("입력할 데이터의 개수 : " );
inputLength = sc.nextInt();
// 3. 입력할 데이터 개수 값을, int 타입 배열 intArr의 길이 값(빈 방의 값)으로 지정한다.******************
intArr = new int[inputLength]; // → 0부터 ~ (inputLength - 1) 만큼의 빈 방이 생성되었다.
// 4. 정수형 데이터를 inputLength만큼 입력 받고, 그 값을 배열 intArr의 인덱스에 저장한다.****************
//
// → 입력할 데이터 개수의 값들이 모두 들어 올 때까지 데이터 입력을 받고,
// 입력 받은 값들을 정수형으로 변환하여
// intArr[] 배열의 0번 방부터 ~ (inputLength - 1) 번째 방까지 저장한다.
System.out.print("데이터 입력(공백 구분) : ");
for (int i = 0; i < inputLength; i++)
{
intArr[i] = sc.nextInt();
}
// 5. for문을 돌면서, intArr[] 배열의 첫 번째 방(index = 0)의 값을 max에 대입하고,
// intArr[0] 값과 다음 들어오는 요소 값인 intArr[1]을 비교 했을 때, intArr[1]이 크다면, 그 값을 max 변수에 저장한다.
// 이 과정을 i = 0부터 ~ (inputLength - 1) 까지 반복한다.
/* [Logic]▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤
*
* ① inputLength에 사용자가 입력한 데이터의 개수 값 int형으로 저장.
*
* ② ┌[i = 0 ~ (inputLength - 1) 까지 다음을 반복]───────────────────────────────┐
* │
* │ ______________________________________________
* │ ⓐ「 intArr의 0번 방부터 ~ (inputLength - 1) 번 방까지
* │ 사용자가 입력한 정수형태의 데이터 값을 저장. 」
* │  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
* │ ________________________________________________
* │ ⓑ「 max 값에 intArr[0] 값을 대입하고 i가 1증가 했을 때 비교할 대상인 intArr[1(i+1)]의 값과 비교하여
* │ max < intArr[i+1] 일 경우 → max에 intArr[i+1] 값 대입. 」
* │  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
* └──────────────────────────────────────────────────────────────────────────┘
*
* ③ 결과 출력 : max 변수 출력.
* ▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤
*/
// max 의 초기값을 0으로 설정할 경우, 음수에서의 대소 비교를
// 제대로 수행하지 못하게 된다!!!
max = intArr[0];
// max의 초기값을 intArr[0]으로 잡았기 때문에
// 반복문의 루프변수 i[inArr의 인덱스값] 시작값을 1로 설정해 주었다.
for (int i = 1; i < inputLength; i++)
{
// ⓑ[ max 값과, intArr[i]의 값을 비교 ] 하여
// ▶『 max < intArr[i] 』일 경우 → max에 intArr[i] 값 대입.
if (max < intArr[i])
{
max = intArr[i];
}
System.out.println("max : " + max);
}
// 6. 결과 값 출력하기**********************************************************************
// >> 가장 큰 수 → 123
// 계속하려면 아무 키나 누르세요...
//【 max에 저장된 최댓값을 출력한다. 】〓〓〓〓〓〓〓〓〓〓〓
System.out.printf("\n>> 가장 큰 수 → %d\n", max);
//〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
}
}
// 실행 결과
/*
입력할 데이터의 개수 : 3
데이터 입력(공백 구분) : 10 -3 4
>> 가장 큰 수 → 10
*/
/*
입력할 데이터의 개수 : 5
데이터 입력(공백 구분) : 100 -23 48 89 345
>> 가장 큰 수 → 345
*/
/*
입력할 데이터의 개수 : 4
데이터 입력(공백 구분) : -899 94 100 -390
max : 94
max : 100
max : 100
>> 가장 큰 수 → 100
계속하려면 아무 키나 누르십시오 . . .
*/