java 기초 공부 내용 정리(배열)

홍준성·2022년 6월 2일
0

java 기초 공부

목록 보기
8/39

배열

배열이란

같은 자료형의 변수들의 나열된 묶음

배열의 사용 목적

같은 타입 변수들의 관리를 편하게 하기 위해서

배열의 사용

1. 배열의 선언과 생성

  1. 선언: 타입[] 배열명; //ex) int[] ar;
  2. 생성: 배열명=new 타입[길이]; //ex) ar= new int[3];

* 선언과 생성을 동시에 초기화 : 타입[] 배열명 = new 타입[길이]; //ex) int[] ar = new int[3];


2. 배열의 길이와 인덱스

배열의 값을 다루기 위해서 인덱스를 사용한다.
* 인덱스: 배열의 위치 값
* (중요) 배열의 시작 번호는 0부터 시작한다.


3. 배열의 초기화와 출력

배열 생성 시 배열의 값은 배열의 타입에 해당하는 기본값으로 초기화한다.

  • 정수형 배열의 초기값: 0
  • 문자형 배열의 초기값: ''
  • 실수형 배열의 초기값: 0.0
  • 문자열 배열의 초기값: Null
int scores[] = new int[3];
scores[0]=100;
scores[1]=80;
scores[2]=70;

for(int i =0;i<3;i++)
System.out.println(i+1+"번째 학생의점수: "+scores[i]+"점");
정수형 배열을 생성할 때, 바로 초기값을 넣는 방법

방법 1
int[]a=new int[] {10, 20, 30, 40, 50};

방법2: new int[] 생략 가능
int []b = {1, 2, 3, 4, 5};

* 정수형 배열을 선언하고, 배열의 길이를 할당하는 방법
int c[] = new int[10]

* 배열 안의 문자열로 출력하는 방법
Arrays.toString(배열명)

로또 번호 생성시 프로그램 만들기

  • 1등부터 5등까지 존재
  • 45개의 숫자 중에 6개의 숫자 맞추기

<로또 프로그램 알고리즘>
1. 6개의 랜덤 숫자와 보너스 점수를 로또 배열에 저장한다.
2. 사용자에게 1~45까지의 6개의 숫자를 입력 받아 배열에 저장한다.
3. 사용자가 입력한 값과 로또 배열에 있는 값을 비교하여 동일한 값의 개수를 count한다.
4. 몇 개의 숫자를 맞췄는지 다음과 같은 조건에 따라 등수를 출력한다.

<조건>
1. 6개의 숫자 중 5개의 숫자와 보너스 번호를 맞히면 2등
2. 6개의 숫자 중 5개의 숫자를 맞히면 3등
3. 6개의 숫자 중 4개의 숫자를 맞히면 4등
4. 6개의 숫자 중 3개의 숫자를 맞히면 5등


<제작 과정>

import java.util.*;

public class Day02Ex {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		Random random = new Random();
		
		int lottoAr[]=new int[6];
		int userAr[]=new int[6];
		
		int bonus, bonusUser;
		int count=0;
		
		
		//6개의 랜덤 숫자와 보너스 점수를 로또 배열에 저장
		for(int i = 0;i<6;i++) {
			lottoAr[i]=random.nextInt(45)+1; //1부터 45까지 받아야하므로 +1을 추가로 해줌
		}
		
		bonus=random.nextInt(45)+1;
		
		//로또 번호 몇 번인지 알기 위해 출력
		System.out.println("Lotto: "+ Arrays.toString(lottoAr)+", bonus: "+bonus);
		
		// 사용자에게 1~45의 6개의 숫자를 입력받아 배열에 저장하고 사용자에게 보너스 점수를 입력
		System.out.println("숫자 6개 입력:");
		for(int i = 0;i<6;i++){
			userAr[i]=sc.nextInt();
		}
		System.out.println("보너스 값 입력:");
		bonusUser=sc.nextInt();
		
		//유저가 작성한 로또 번호
		System.out.println("User: "+Arrays.toString(userAr)+", bonus: " + bonusUser);
		
		//로또 배열의 값과 사용자배열의 값 중 같은 값이 몇 개 있는지 카운팅(순서는 상관 없음)
		for(int j = 0; j<6 ; j++) {
			for(int i = 0;i<6;i++) {
				if(lottoAr[j]==userAr[i]) {
					count++;
				}
			}
		}
		
		System.out.println("총 맞춘 갯수: " + count);
		
		//count의 개수에 따라서 등수 정하기
		if(count==6) {
			System.out.println("축하드립니다! 1등입니다!");
		}
		else if(count==5) {
			if(bonus==bonusUser) {
				System.out.println("축하드립니다! 2등입니다!");
			}
			else {
				System.out.println("축하드립니다! 3등입니다!");
			}
			
		}
		
		else if(count==4) {
			System.out.println("축하드립니다! 4등입니다!");
		}
		
		else if(count==3) {
			System.out.println("축하드립니다! 5등입니다!");
		}
		else {
			System.out.println("아쉽지만 다음 기회에.");
		}
	}
}
profile
준성이의 개발자 공부 velog

0개의 댓글