Java기반 Back-End 개발자 & 정보처리산업기사 과정 강의 7일차 정리
배열
1차원 배열
1차원 배열 실습
예시 1. int형 5개짜리 배열을 선언하여, 정수를 5개 입력받고 그 중 짝수와 홀수를 구분하여 출력해보자.
Scanner sc = new Scanner(System.in);
int[] arr = new int[5];
System.out.println("정수 5개를 입력하세요");
for (int i = 0; i < arr.length; i++) {
System.out.print((i + 1) + "번째 숫자 입력 : ");
arr[i] = sc.nextInt();
}
System.out.print("입력된 숫자 중 짝수는 : ");
for (int i = 0; i < arr.length; i++) {
if (arr[i] % 2 == 0)
System.out.print(arr[i] + " ");
}
System.out.println();
System.out.print("입력된 숫자 중 홀수는 : ");
for (int i = 0; i < arr.length; i++) {
if (arr[i] % 2 != 0)
System.out.print(arr[i] + " ");
}
→
정수 5개를 입력하세요
1번째 숫자 입력 : 1
2번째 숫자 입력 : 2
3번째 숫자 입력 : 3
4번째 숫자 입력 : 4
5번째 숫자 입력 : 5
입력된 숫자 중 짝수는 : 2 4
입력된 숫자 중 홀수는 : 1 3 5
예시 2. int타입의 크기가 3인 배열을 선언하고, 각 요소를 입력받아 요소 중 가장 큰 값을 출력해보자.
Scanner sc = new Scanner(System.in);
int[] arr = new int[3];
int maxNum = 0; // 0 이상만 입력한다고 가정
for (int i = 0; i < arr.length; i++) {
System.out.print((i + 1) + "번째 숫자 입력 : ");
arr[i] = sc.nextInt();
}
for (int i = 0; i < arr.length; i++) {
if (maxNum < arr[i])
maxNum = arr[i];
}
System.out.println("입력된 수 중 가장 큰 수 : " + maxNum);
→
1번째 숫자 입력 : 100
2번째 숫자 입력 : 70
3번째 숫자 입력 : 90
입력된 수 중 가장 큰 수 : 100
예시 3. 크기가 5인 int타입의 배열을 선언하고, 각각의 요소를 입력받은 다음 가장 작은 값을 찾아 출력해보자.
Scanner sc = new Scanner(System.in);
int[] arr = new int[5];
for (int i = 0; i < arr.length; i++) {
System.out.print((i + 1) + "번째 숫자 입력 : ");
arr[i] = sc.nextInt();
}
int minNum = arr[0];
for (int i = 0; i < arr.length; i++) {
if (minNum > arr[i])
minNum = arr[i];
}
System.out.println("배열 요소 중 가장 작은 숫자 : " + minNum);
→
1번째 숫자 입력 : 1
2번째 숫자 입력 : 2
3번째 숫자 입력 : 3
4번째 숫자 입력 : 4
5번째 숫자 입력 : 0
배열 요소 중 가장 작은 숫자 : 0
예시 4. int타입의 크기가 10인 배열을 선언하고, 각 요소를 미리 할당한 다음, 숫자 하나를 입력받아 해당하는 숫자가 배열에 있다면 배열의 몇 번째에 위치하는지, 없다면 없다고 출력해보자.
int[] arr = new int[] {1, 10, 3, 8, 5, 6, 7, 4, 9, 2};
System.out.print("숫자 입력 : ");
int input = sc.nextInt();
int index = -1;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == input)
index = i;
}
// n번째의 경우 배열 세는 방법대로 하자면, 0~9번째라고 해야 하지만
// 일단 1~10번째로 나오도록 바꾸었음.
if (index != -1) {
System.out.println("입력한 숫자 " + input + "는 " + (index + 1) + "번째에 있습니다.");
} else {
System.out.println("입력한 숫자를 찾지 못했습니다.");
}
→
숫자 입력 : 2
입력한 숫자 2는 10번째에 있습니다.
예시 5. int타입 크기 10짜리 배열을 선언하고, 숫자를 입력받아서 배열에 있는 요소와 입력이 일치하면 요소를 0으로 바꾸자. 그리고 배열의 모든 요소가 0이 되었다면, 프로그램을 종료시키자.
Scanner sc = new Scanner(System.in);
int[] arr = new int[] {1, 10, 3, 8, 5, 6, 7, 4, 9, 2};
while (true) {
int runOrStop = 0;
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
// 배열에 저장된 요소 중 0보다 큰 요소가 하나라도 있으면
if (runOrStop < arr[i])
// runOrStop 변수에 저장
runOrStop = arr[i];
}
System.out.println();
// 배열에 저장된 모든 요소가 0이면 종료
if (runOrStop == 0)
break;
System.out.print("숫자 입력 : ");
int input = sc.nextInt();
for (int i = 0; i < arr.length; i++) {
if (input == arr[i]) {
arr[i] = 0;
break;
}
}
}
System.out.println("프로그램 종료");
→
1 10 3 8 5 6 7 4 9 2
숫자 입력 : 1
0 10 3 8 5 6 7 4 9 2
숫자 입력 : 10
0 0 3 8 5 6 7 4 9 2
숫자 입력 : 2
0 0 3 8 5 6 7 4 9 0
숫자 입력 : 9
0 0 3 8 5 6 7 4 0 0
숫자 입력 : 4
0 0 3 8 5 6 7 0 0 0
숫자 입력 : 7
0 0 3 8 5 6 0 0 0 0
숫자 입력 : 8
0 0 3 0 5 6 0 0 0 0
숫자 입력 : 8
0 0 3 0 5 6 0 0 0 0
숫자 입력 : 8
0 0 3 0 5 6 0 0 0 0
숫자 입력 : 9
0 0 3 0 5 6 0 0 0 0
숫자 입력 : 2
0 0 3 0 5 6 0 0 0 0
숫자 입력 : 0
0 0 3 0 5 6 0 0 0 0
숫자 입력 : 6
0 0 3 0 5 0 0 0 0 0
숫자 입력 : 5
0 0 3 0 0 0 0 0 0 0
숫자 입력 : 3
0 0 0 0 0 0 0 0 0 0
프로그램 종료
예시 6. 아래와 같은 요구사항을 가진 프로그램을 만들어보자.
-
[1] 학생 수
선택 시, 학생 수를 입력받아 학생 수 만큼, 학생 점수를 담을 수 있는 배열을 선언하자.
(학생 수는 0보다 크게 입력하고, 학생 수를 입력하지 않았을때는 다른 메뉴들이 작동되지 않도록 한다.)
-
[2] 점수입력
선택 시, 학생 수만큼 배열을 순회하며 각 요소(점수)를 입력받아 할당하도록 하자.
-
[3] 점수리스트
선택 시, 각 학생의 점수가 최소 1번 학생부터 n번 학생까지 순차적으로 출력되도록 해 보자.
-
[4] 분석
선택 시, 학생들의 평균 점수, 학생들 중 최대 점수를 출력하도록 해 보자.
-
[5] 종료
선택 시, 프로그램을 종료시켜보자.
Scanner sc = new Scanner(System.in);
int[] studentArr = null;
boolean run = true;
while (run) {
System.out.println("=================================================");
System.out.println("| 1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료 |");
System.out.println("=================================================");
int input = sc.nextInt();
// 처음에 학생 수를 입력하지 않고 + 배열도 미할당인 상태일 때,
if ((input != 1) && (studentArr == null)) {
System.out.println("학생 수를 입력하세요.");
continue;
}
switch (input) {
case 1:
// 학생 수를 받아 배열을 동적 할당
System.out.print("학생 수 입력 : ");
int studentNum = sc.nextInt();
studentArr = new int[studentNum];
break;
case 2:
// 학생 점수 입력받기
for (int i = 0; i < studentArr.length; i++) {
System.out.print((i + 1) + "번 학생 점수 입력 : ");
studentArr[i] = sc.nextInt();
}
break;
case 3:
// 학생 점수 출력
for (int i = 0; i < studentArr.length; i++) {
System.out.println((i + 1) + "번째 학생의 점수 : " + studentArr[i]);
}
break;
case 4:
int maxScore = 0; // 최댓값 저장 변수
int sumScore = 0; // 평균 내기 전 점수 합
for (int i = 0; i < studentArr.length; i++) {
sumScore += studentArr[i];
if (maxScore < studentArr[i]) {
maxScore = studentArr[i];
}
}
int avgScore = sumScore / studentArr.length; // 학생점수를 학생 수 만큼 나눠 평균 내기
System.out.println("최대 점수 : " + maxScore);
System.out.println("평균 점수 : " + avgScore);
break;
case 5:
run = false;
break;
default:
System.out.println("잘못된 입력입니다.");
}
}
System.out.println("프로그램 종료");
→
=================================================
| 1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료 |
=================================================
1
학생 수 입력 : 5
=================================================
| 1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료 |
=================================================
2
1번 학생 점수 입력 : 10
2번 학생 점수 입력 : 20
3번 학생 점수 입력 : 30
4번 학생 점수 입력 : 40
5번 학생 점수 입력 : 50
=================================================
| 1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료 |
=================================================
3
1번째 학생의 점수 : 10
2번째 학생의 점수 : 20
3번째 학생의 점수 : 30
4번째 학생의 점수 : 40
5번째 학생의 점수 : 50
=================================================
| 1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료 |
=================================================
4
최대 점수 : 50
평균 점수 : 30
=================================================
| 1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료 |
=================================================
5
예시 7. 아래와 같은 프로그램을 만들어보자.
학생 수
를 입력받는다.
학생 수
만큼의 이름 배열
, 점수 배열
을 동적 선언한다.
for
문 을 이용해, 이름
과 점수
를 각각 입력받는다.
학생의 이름과 점수
를 차례대로 출력한다.
Scanner sc = new Scanner(System.in);
System.out.print("학생 수 : ");
int studentNum = sc.nextInt();
int[] scoreArr = new int[studentNum];
String[] nameArr = new String[studentNum];
for (int i = 0; i < studentNum; i++) {
System.out.print("이름 입력 : ");
nameArr[i] = sc.next();
}
for (int i = 0; i < studentNum; i++) {
System.out.print(nameArr[i] + " 학생의 점수 : ");
scoreArr[i] = sc.nextInt();
}
for (int i = 0; i < studentNum; i++) {
System.out.println(nameArr[i] + " : " + scoreArr[i]);
}
→
학생 수 : 3
이름 입력 : A
이름 입력 : B
이름 입력 : C
A 학생의 점수 : 100
B 학생의 점수 : 90
C 학생의 점수 : 80
A : 100
B : 90
C : 80
Author And Source
이 문제에 관하여(Java기반 Back-End 개발자 & 정보처리산업기사 과정 강의 7일차 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@crisine/Java기반-Back-End-개발자-정보처리산업기사-과정-강의-7일차-정리
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Scanner sc = new Scanner(System.in);
int[] arr = new int[5];
System.out.println("정수 5개를 입력하세요");
for (int i = 0; i < arr.length; i++) {
System.out.print((i + 1) + "번째 숫자 입력 : ");
arr[i] = sc.nextInt();
}
System.out.print("입력된 숫자 중 짝수는 : ");
for (int i = 0; i < arr.length; i++) {
if (arr[i] % 2 == 0)
System.out.print(arr[i] + " ");
}
System.out.println();
System.out.print("입력된 숫자 중 홀수는 : ");
for (int i = 0; i < arr.length; i++) {
if (arr[i] % 2 != 0)
System.out.print(arr[i] + " ");
}
→
정수 5개를 입력하세요
1번째 숫자 입력 : 1
2번째 숫자 입력 : 2
3번째 숫자 입력 : 3
4번째 숫자 입력 : 4
5번째 숫자 입력 : 5
입력된 숫자 중 짝수는 : 2 4
입력된 숫자 중 홀수는 : 1 3 5
Scanner sc = new Scanner(System.in);
int[] arr = new int[3];
int maxNum = 0; // 0 이상만 입력한다고 가정
for (int i = 0; i < arr.length; i++) {
System.out.print((i + 1) + "번째 숫자 입력 : ");
arr[i] = sc.nextInt();
}
for (int i = 0; i < arr.length; i++) {
if (maxNum < arr[i])
maxNum = arr[i];
}
System.out.println("입력된 수 중 가장 큰 수 : " + maxNum);
→
1번째 숫자 입력 : 100
2번째 숫자 입력 : 70
3번째 숫자 입력 : 90
입력된 수 중 가장 큰 수 : 100
Scanner sc = new Scanner(System.in);
int[] arr = new int[5];
for (int i = 0; i < arr.length; i++) {
System.out.print((i + 1) + "번째 숫자 입력 : ");
arr[i] = sc.nextInt();
}
int minNum = arr[0];
for (int i = 0; i < arr.length; i++) {
if (minNum > arr[i])
minNum = arr[i];
}
System.out.println("배열 요소 중 가장 작은 숫자 : " + minNum);
→
1번째 숫자 입력 : 1
2번째 숫자 입력 : 2
3번째 숫자 입력 : 3
4번째 숫자 입력 : 4
5번째 숫자 입력 : 0
배열 요소 중 가장 작은 숫자 : 0
int[] arr = new int[] {1, 10, 3, 8, 5, 6, 7, 4, 9, 2};
System.out.print("숫자 입력 : ");
int input = sc.nextInt();
int index = -1;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == input)
index = i;
}
// n번째의 경우 배열 세는 방법대로 하자면, 0~9번째라고 해야 하지만
// 일단 1~10번째로 나오도록 바꾸었음.
if (index != -1) {
System.out.println("입력한 숫자 " + input + "는 " + (index + 1) + "번째에 있습니다.");
} else {
System.out.println("입력한 숫자를 찾지 못했습니다.");
}
→
숫자 입력 : 2
입력한 숫자 2는 10번째에 있습니다.
Scanner sc = new Scanner(System.in);
int[] arr = new int[] {1, 10, 3, 8, 5, 6, 7, 4, 9, 2};
while (true) {
int runOrStop = 0;
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
// 배열에 저장된 요소 중 0보다 큰 요소가 하나라도 있으면
if (runOrStop < arr[i])
// runOrStop 변수에 저장
runOrStop = arr[i];
}
System.out.println();
// 배열에 저장된 모든 요소가 0이면 종료
if (runOrStop == 0)
break;
System.out.print("숫자 입력 : ");
int input = sc.nextInt();
for (int i = 0; i < arr.length; i++) {
if (input == arr[i]) {
arr[i] = 0;
break;
}
}
}
System.out.println("프로그램 종료");
→
1 10 3 8 5 6 7 4 9 2
숫자 입력 : 1
0 10 3 8 5 6 7 4 9 2
숫자 입력 : 10
0 0 3 8 5 6 7 4 9 2
숫자 입력 : 2
0 0 3 8 5 6 7 4 9 0
숫자 입력 : 9
0 0 3 8 5 6 7 4 0 0
숫자 입력 : 4
0 0 3 8 5 6 7 0 0 0
숫자 입력 : 7
0 0 3 8 5 6 0 0 0 0
숫자 입력 : 8
0 0 3 0 5 6 0 0 0 0
숫자 입력 : 8
0 0 3 0 5 6 0 0 0 0
숫자 입력 : 8
0 0 3 0 5 6 0 0 0 0
숫자 입력 : 9
0 0 3 0 5 6 0 0 0 0
숫자 입력 : 2
0 0 3 0 5 6 0 0 0 0
숫자 입력 : 0
0 0 3 0 5 6 0 0 0 0
숫자 입력 : 6
0 0 3 0 5 0 0 0 0 0
숫자 입력 : 5
0 0 3 0 0 0 0 0 0 0
숫자 입력 : 3
0 0 0 0 0 0 0 0 0 0
프로그램 종료
[1] 학생 수
선택 시, 학생 수를 입력받아 학생 수 만큼, 학생 점수를 담을 수 있는 배열을 선언하자.
(학생 수는 0보다 크게 입력하고, 학생 수를 입력하지 않았을때는 다른 메뉴들이 작동되지 않도록 한다.)
[2] 점수입력
선택 시, 학생 수만큼 배열을 순회하며 각 요소(점수)를 입력받아 할당하도록 하자.
[3] 점수리스트
선택 시, 각 학생의 점수가 최소 1번 학생부터 n번 학생까지 순차적으로 출력되도록 해 보자.
[4] 분석
선택 시, 학생들의 평균 점수, 학생들 중 최대 점수를 출력하도록 해 보자.
[5] 종료
선택 시, 프로그램을 종료시켜보자.
Scanner sc = new Scanner(System.in);
int[] studentArr = null;
boolean run = true;
while (run) {
System.out.println("=================================================");
System.out.println("| 1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료 |");
System.out.println("=================================================");
int input = sc.nextInt();
// 처음에 학생 수를 입력하지 않고 + 배열도 미할당인 상태일 때,
if ((input != 1) && (studentArr == null)) {
System.out.println("학생 수를 입력하세요.");
continue;
}
switch (input) {
case 1:
// 학생 수를 받아 배열을 동적 할당
System.out.print("학생 수 입력 : ");
int studentNum = sc.nextInt();
studentArr = new int[studentNum];
break;
case 2:
// 학생 점수 입력받기
for (int i = 0; i < studentArr.length; i++) {
System.out.print((i + 1) + "번 학생 점수 입력 : ");
studentArr[i] = sc.nextInt();
}
break;
case 3:
// 학생 점수 출력
for (int i = 0; i < studentArr.length; i++) {
System.out.println((i + 1) + "번째 학생의 점수 : " + studentArr[i]);
}
break;
case 4:
int maxScore = 0; // 최댓값 저장 변수
int sumScore = 0; // 평균 내기 전 점수 합
for (int i = 0; i < studentArr.length; i++) {
sumScore += studentArr[i];
if (maxScore < studentArr[i]) {
maxScore = studentArr[i];
}
}
int avgScore = sumScore / studentArr.length; // 학생점수를 학생 수 만큼 나눠 평균 내기
System.out.println("최대 점수 : " + maxScore);
System.out.println("평균 점수 : " + avgScore);
break;
case 5:
run = false;
break;
default:
System.out.println("잘못된 입력입니다.");
}
}
System.out.println("프로그램 종료");
→
=================================================
| 1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료 |
=================================================
1
학생 수 입력 : 5
=================================================
| 1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료 |
=================================================
2
1번 학생 점수 입력 : 10
2번 학생 점수 입력 : 20
3번 학생 점수 입력 : 30
4번 학생 점수 입력 : 40
5번 학생 점수 입력 : 50
=================================================
| 1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료 |
=================================================
3
1번째 학생의 점수 : 10
2번째 학생의 점수 : 20
3번째 학생의 점수 : 30
4번째 학생의 점수 : 40
5번째 학생의 점수 : 50
=================================================
| 1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료 |
=================================================
4
최대 점수 : 50
평균 점수 : 30
=================================================
| 1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료 |
=================================================
5
학생 수
를 입력받는다.학생 수
만큼의 이름 배열
, 점수 배열
을 동적 선언한다.for
문 을 이용해, 이름
과 점수
를 각각 입력받는다.학생의 이름과 점수
를 차례대로 출력한다.Scanner sc = new Scanner(System.in);
System.out.print("학생 수 : ");
int studentNum = sc.nextInt();
int[] scoreArr = new int[studentNum];
String[] nameArr = new String[studentNum];
for (int i = 0; i < studentNum; i++) {
System.out.print("이름 입력 : ");
nameArr[i] = sc.next();
}
for (int i = 0; i < studentNum; i++) {
System.out.print(nameArr[i] + " 학생의 점수 : ");
scoreArr[i] = sc.nextInt();
}
for (int i = 0; i < studentNum; i++) {
System.out.println(nameArr[i] + " : " + scoreArr[i]);
}
→
학생 수 : 3
이름 입력 : A
이름 입력 : B
이름 입력 : C
A 학생의 점수 : 100
B 학생의 점수 : 90
C 학생의 점수 : 80
A : 100
B : 90
C : 80
Author And Source
이 문제에 관하여(Java기반 Back-End 개발자 & 정보처리산업기사 과정 강의 7일차 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@crisine/Java기반-Back-End-개발자-정보처리산업기사-과정-강의-7일차-정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)