AWS 클라우드환경 네이티브 수업 52일차
진행
1. 배열
2. 배열의 반복문 활용 예시
3. Spring에 외부에서 가져온 프로젝트 넣기
4. 배열 연습 문제
요약
1. 배열과 배열의 반복문 활용 예시
2. 변수.length
3. 배열 연습 문제
4. Spring에 외부에서 가져온 프로젝트 넣기
배열
같은 자료형의 데이터들을 그룹화해서 묶은 것이다.
배열은 생성과 동시에 값을 따로 초기화하지 않으면,
자동적으로 자신의 타입에 해당하는 기본값으로 초기화(정수는 0, 실수는 0.0, 문자는 빈 칸, 객체 배열은 null) 한다.
구조는 아래와 같다.
크기가 5개짜리 배열을 만드는 방법.
자료형[] 변수명 = {데이터};
자료형[] 변수명 = new 자료형[]{데이터};
자료형[] 변수명 = new 자료형[배열크기];
방법1
int[] score = {55, 12, 46, 26, 89};
방법2
int[] score = new int[]{55, 12, 46, 26, 89};
방법3
int[] score = new int[6];
score[0] = 55; // 0번 index에 값 할당
score[1] = 12; // 1번 index에 값 할당
방법4
int[] score;
score = new int[]{55, 12, 46, 26, 89};
배열의 출력
배열 자체를 출력
: 타입@주소 형식 / @ 뒤에 나오는 16진수는 배열의 주소인데 실제 주소가 아닌 내부 주소이다.
char 배열은 println 메서드로 출력하면 각 요소가 구분자 없이 그대로 출력.
배열의 저장된 값들을 확인할 때
: for문을 사용
간단한 방법
: Arrays.toString(배열 이름) 메서드를 사용
=> Arrays를 사용하기 위해서는 import가 필요하다.
아래는 직접 실행해 본 결과물이다.
package LectureExam;
import java.util.Arrays;
// Arrays를 쓰기 위해 필요.
public class exercise2 {
public static void main(String[] args) {
int[] arr1 = new int[3];
char[] arr2 = new char[3];
// 배열 변수 자체 출력
System.out.println(arr1);
System.out.println("위처럼 자료형@주소 가 출력된다. \n");
// int 배열의 초기값 요소만 출력
for( int i = 0 ; i < arr1.length ; i++ ) {
System.out.print(arr1[i] + " ");
}
System.out.println();
// char 배열의 초기값 요소만 출력
for( int i = 0 ; i < arr2.length ; i++ ) {
System.out.print(arr2[i] + " ");
}
System.out.println();
// int 배열의 초기값 출력
System.out.println(Arrays.toString(arr1));
// char 배열의 초기값 출력
System.out.println(Arrays.toString(arr2));
}
}
결과
[I@2f92e0f4
위처럼 자료형@주소 가 출력된다.
0 0 0
[0, 0, 0]
[ , , ]
배열의 반복문 활용
1. 점수들의 합과 평균을 구해라.
{88, 70, 91, 45, 30}
반복문 활용 1-1.
package LectureExam;
public class ArrayExam {
public static void main(String[] args) {
int sum = 0;
int avg = 0;
int[] score = {88, 70, 91, 45, 30};
for(int i = 0 ; i < score.length ; i ++ ) { // 속성 length를 이용
sum += score[i];
}
avg = sum/5;
System.out.println("총점 : " + sum );
System.out.println("평균 : " + avg );
}
}
결과
총점 : 324
평균 : 64
위는 배열의 크기만큼만 돌릴 것이기 때문에
" 변수.length " 라는 속성을 사용한다.
length는 배열의 크기를 갖게 해주는 속성으로 배열의 크기가 변경이 되어도 변경된 크기를 갖게 해준다.
반복문 활용 1-2.
package LectureExam;
public class ArrayExam {
public static void main(String[] args) {
int sum = 0;
int avg = 0;
int[] score = {88, 70, 91, 45, 30};
for(int i : score ) { // 여기 조건부분이 변함.
sum += i;
}
avg = sum/5;
System.out.println("총점 : " + sum );
System.out.println("평균 : " + avg );
}
}
결과
총점 : 324
평균 : 64
위의 방법은 i 라는 변수에 배열변수인 score의 데이터들을
순서대로 넣어서 for을 돌리는 형식이다.
1-1 방법에 비해 상대적으로 편리하게 쓸 수 있다.
2. 데이터 중에 최댓값과 최솟값이 무엇인지 구해라.
{70, 60, 88, 45, 97, 58}
반복법 활용 2.
package LectureExam;
public class ArrayExam {
public static void main(String[] args) {
int[] score = {70, 60, 88, 45, 97, 58};
int max = score[0];
int min = score[0];
for(int i = 1 ; i < score.length ; i ++ ) {
if(max < score[i]) {
max = score[i] ;
} else if(min > score[i] ){
min = score[i] ;
} else {
continue;
}
}
System.out.println("최댓값 : " + max );
System.out.println("최솟값 : " + min );
}
}
결과
최댓값 : 97
최솟값 : 45
3. 배열 내의 데이터들 섞기
(1) 0~9까지의 정수 섞기
(2) 0~44까지의 정수 섞어서 6번째까지만 표시하기
반복법 활용 3-1.
package LectureExam;
public class ArrayExam {
public static void main(String[] args) {
int[] number = new int[10];
for(int i = 0 ; i < number.length ; i ++ ) {
number[i] = i; // 배열을 0~9까지의 정수로 초기화한다. {0, 1, ..., 9}
System.out.print(number[i] + " \t");
}
System.out.println();
// 랜덤 수를 뽑아내서 배열 첫자리와 100번을 섞는다
for( int i = 0 ; i <100 ; i++) {
int r = (int)(Math.random() * 10);
// 랜덤 수는 무작위 인덱스 위치를 뽑는 것과 같다.
int tempnum = number[0];
number[0] = number[r];
number[r] = tempnum;
// 그리고 나서 무작위 위치와 0번 위치랑 계속 교환.
}
for(int i = 0 ; i < number.length ; i ++ ) {
System.out.print(number[i] + " \t");
}
}
}
결과
0 1 2 3 4 5 6 7 8 9
4 5 3 6 1 9 0 2 7 8
반복법 활용 3-2.
package LectureExam;
public class ArrayExam {
public static void main(String[] args) {
int[] number = new int[45];
int r = 0;
System.out.print("기존 : ");
for(int i = 0 ; i < 45 ; i ++ ) {
number[i] = i; // 배열을 0~44까지의 정수로 초기화한다. {0, 1, ..., 44}
if(i < 6 ) {
System.out.print(number[i] + " \t");
}
}
System.out.println();
// 랜덤 수를 뽑아내서 배열 첫자리와 100번을 섞는다
for( int i = 0 ; i <100 ; i++) {
r = (int)(Math.random() * 45);
// 무작위 인덱스를 45까지 늘린다.
int tempnum = number[0];
number[0] = number[r];
number[r] = tempnum;
// 그리고 나서 무작위 위치와 0번 위치랑 계속 교환.
}
System.out.print("변경 : ");
for(int i = 0 ; i < 6 ; i ++ ) {
System.out.print(number[i] + " \t");
}
}
}
결과
기존 : 0 1 2 3 4 5
변경 : 38 30 2 21 15 5
배열 연습 문제
문제1. 10자리의 랜덤 숫자를 받은 후, 받은 숫자를 왼쪽부터 작은 숫자가 오도록 정렬하는 구문을 만들어라.
문제2. 10자리의 랜덤 숫자를 받은 후, 아래와 같이 받은 숫자의 숫자 별 갯수를
각 숫자 자리별로 카운팅하는 구문을 만들어라.
예 : 1122445566
0은 0개
1은 2개
2는 2개
3은 0개
...
9는 0개
=> 0220222000
문제3. 10자리의 랜덤 숫자를 받은 후, 받은 숫자를 왼쪽부터 큰 숫자가 오도록 정렬하는 구문을 만들어라.
(단, 오른쪽 작업이 끝난 방은 다음 작업에서 제외시키는 방향으로 만들어라)
문제4. 1~45 중 중복되지 않은 수 6개를 추출해서 왼쪽부터 오름차순으로 정렬시켜라. (로또 번호 뽑는 거임!)
문제5. 500, 100, 50, 10원이 각각 10개씩 있을 때, 입력한 돈에 따라 환전되는 동전의 갯수와 남은 갯수, 남은 돈을 출력하는 구문을 만들어라. 만약 금액이 동전 소지 갯수를 초과한다면 안내문구를 띄우도록 만들어라.
문제1 답.
package LectureExam;
public class ArrayExam {
public static void main(String[] args) {
int[] number = new int[10];
int temp = 0;
for(int i = 0 ; i < number.length ; i++ ) {
number[i] = (int)(Math.random() * 10);
}
System.out.print("초기의 숫자 : ");
for(int a = 0 ; a < number.length ; a++ ) {
System.out.print(number[a]);
}
System.out.println();
System.out.print("정렬 후 숫자 : ");
for(int j = 0 ; j < number.length-1 ; j++ ) {
for(int k = j+1 ; k < number.length ; k++) {
if( number[j] > number[k] ) {
temp = number[j];
number[j] = number[k] ;
number[k] = temp;
}
}
}
for(int b = 0 ; b < number.length ; b++ ) {
System.out.print(number[b]);
}
}
}
결과
초기의 숫자 : 6404412131
정렬 후 숫자 : 0111234446
문제2 답.
package LectureExam;
public class ArrayExam {
public static void main(String[] args) {
int[] number = new int[10];
int[] counter = new int[10];
for(int i = 0 ; i < number.length ; i++ ) {
number[i] = (int)(Math.random() * 10);
}
System.out.print("초기의 숫자 : ");
for(int a = 0 ; a < number.length ; a++ ) {
System.out.print(number[a]);
}
System.out.println();
System.out.print("초기 숫자의 숫자 별 갯수 : ");
for(int j = 0 ; j < counter.length ; j++ ) {
counter[number[j]]++;
}
for(int b = 0 ; b < counter.length ; b++ ) {
System.out.print(counter[b]);
}
}
}
결과
초기의 숫자 : 7725740631
초기 숫자의 숫자 별 갯수 : 1111111300
문제3 답.
package LectureExam;
public class ArrayExam {
public static void main(String[] args) {
int[] number = new int[10];
int temp = 0;
for(int i = 0 ; i < number.length ; i++ ) {
number[i] = (int)(Math.random() * 10);
}
System.out.print("초기의 숫자 : ");
for(int a = 0 ; a < number.length ; a++ ) {
System.out.print(number[a]);
}
System.out.println();
System.out.print("정렬 후 숫자 : ");
for(int j = 9 ; j > 0 ; j-- ) {
for(int k = j-1 ; k >= 0 ; k--) {
if( number[j] > number[k] ) {
temp = number[j];
number[j] = number[k] ;
number[k] = temp;
}
}
}
for(int b = 0 ; b < number.length ; b++ ) {
System.out.print(number[b]);
}
}
}
결과
초기의 숫자 : 8400992392
정렬 후 숫자 : 9998432200
문제4 답.
package LectureExam;
public class lotto {
public static void main(String[] args) {
int num = 6;
int[] ball = new int[num];
int temp = 0 ;
// 1 ~ 45 정수 중에서 중복되지 않은 정수 6개를 추출
for(int a = 0 ; a < num ; a++) {
ball[a] = (int)(Math.random() * 45) + 1;
for(int b = 0 ; b < num ; b++ ) {
if( a != b && ball[a] == ball[b] ) {
a --;
break;
} else {
continue;
}
}
}
for(int i = 0; i < num; i++) {
System.out.print(ball[i] + "\t");
}
System.out.println();
// 왼쪽부터 오른차순으로 정렬
for( int c = 0 ; c < num-1 ; c++ ) {
for( int d = c+1 ; d < num ; d++ ) {
if(ball[c] > ball[d]) {
temp = ball[c];
ball[c] = ball[d];
ball[d] = temp;
}
}
}
// 결과값을 출력한다.
for(int i = 0; i < num; i++) {
System.out.print(ball[i] + "\t");
}
}
}
결과
41 14 12 45 22 38
12 14 22 38 41 45
문제5 답.
package Lecture;
import java.util.Scanner;
public class ArrayExam {
public static void main(String[] args) {
int[] Exchange = {500, 100, 50, 10};
int[] numberCoin = {10, 10, 10, 10};
java.util.Scanner SC = new java.util.Scanner(System.in);
System.out.print("동전으로 교환할 금액을 적어주세요 : ");
int InputMoney = SC.nextInt();
for(int i = 0 ; i < 4 ; i++ ) {
if(InputMoney/Exchange[i] > 10) {
System.out.println("죄송합니다. 동전이 부족하여 교환이 어렵습니다.");
break;
} else {
System.out.println( Exchange[i] + "원은 " + InputMoney/Exchange[i] + "개 사용, 남은 동전 갯수 : " + (numberCoin[i] - InputMoney/Exchange[i]));
InputMoney -= InputMoney-InputMoney%Exchange[i];
}
}
}
}
결과
동전으로 교환할 금액을 적어주세요 : 4880
500원은 9개 사용, 남은 동전 갯수 : 1
100원은 3개 사용, 남은 동전 갯수 : 7
50원은 1개 사용, 남은 동전 갯수 : 9
10원은 3개 사용, 남은 동전 갯수 : 7
결과
동전으로 교환할 금액을 적어주세요 : 10900
죄송합니다. 동전이 부족하여 교환이 어렵습니다.
※ 참고 - Spring에 외부에서 가져온 프로젝트 넣기
Spring 프로그램에서 File - Import 를 클릭.
General - Existing Projects into Workspace - Next 들어가면
아래와 같은 화면이 나온다.
Select root directory는 내가 가져온 프로젝트 파일 폴더를 불러오는 것으로
아래의 옵션에서 Copy projects into workspace를 누르는 것이 좋다.
Select archive file 은 내가 외부에서 가져온 프로젝트 압축 파일을 불러오는 것으로
옵션의 1, 2번째가 자동으로 선택된다.
'코딩수업 > AWS 클라우드환경 네이티브' 카테고리의 다른 글
7/29 자바(Java) 클래스와 객체 (참조 변수의 이해, Static ) (0) | 2022.07.29 |
---|---|
7/28 자바(Java) 다차원 배열, 가변 배열, 배열의 복사, 다차원 배열 연습 문제 (0) | 2022.07.28 |
7/26 자바(Java) 반복문 연습 문제 (2) | 2022.07.26 |
7/25 자바(Java) 반복문 연습 문제 (2) | 2022.07.25 |
7/22 자바(Java) 반복문 연습 문제 진행, Scanner 클래스 (0) | 2022.07.22 |
댓글