컬렉션 프레임워크 ( collection Framework )

컬렉션 프레임워크

 

List

List - 배열에 비해 공간에 대한 제약이 자유롭다
( 배열은 공간을 지정해줘야 사용할 수 있지만 List 는 공간 값을 지정하지 않아도 된다 )

 

List 사용 방법

 

List 의 크기를 구하는 방법, List 값 출력 방법 ( 향상된 for 문 사용 가능 )

 

contains() 메소드를 활용하여 해당 값이 List 내에 존재하는지 확인

 

List 의 값을 인덱스 또는 데이터를 기준으로 삭제하는 remove() 메소드

 

List 내부의 저장 값을 변경하는 set() 메소드
콘솔 입, 출력 값

 
 

728x90

 

 

 

 

 

 

난수 ( random )

난수 ( random )

 

난수 생성 방법 1, 2

 

 

1. Math.random() : 0.0000.....1 ~ 0.99999..... 까지의 난수를 생성

( 여기에 3을 곱한다면 정수 값으로 올라올 수 있는 수는 0, 1, 2 가 되며 int 자료형으로 형변환 하면 0, 1, 2 값만 남는다 )

 

2. java.util 패키지의 Random 클래스 사용 : Random 자료형의 변수로 선언 후 nextInt 등 클래스 메소드를 사용

 

 

 

 

 

 

728x90

 

 

 

 

 

 

문자열 ( String )

문자열 ( String )

 

문자열 선언, 초기화 종류

 

 

 

 

 

 

 

 

 

 

문자열 대문자, 소문자 정렬

문자열 전체를 소문자 또는 대문자로 변경

 

활용 예시

 

 

 

 

 

 

 

 

 

 

문자열 공백 제거

문자열 공백을 제거해주는 trim() 메소드

 

trim() 메소드 사용 방법

 

 

 

 

 

 

 

 

 

 

문자열 특정 문자 치환

replace() 메소드를 사용하여 특정 문자를 치환

 

 

 

 

 

 

 

 

 

 

문자열 int 로 변환

Integer.parseInt() 를 사용하여 문자열을 int 형으로 변경

 

변경된 int 자료형을 다시 문자열로 변경하는 방법

 

728x90

 

 

 

 

 

 

배열

배열

 

향상된 for 문 사용법

배열 사용법 ( 배열은 int 뿐만 아니라 다른 자료형들을 담아서 사용할 수 있다 )

배열의 index 는 0 부터 시작한다

배열을 사용하여 문자열을 입력받아 출력
향상된 for 문을 사용하여 출력, 배열 변수를 선언할때는 자료형이 필요하지만 초기화할때는 자료형을 선언하지 않아도 된다

 

 

 

 

 

 

 

 

 

 

다차원 배열

다차원 배열
다차원 배열 변수 선언 및 초기화
중첩 반복문으로 배열을 출력 ( 다중 배열에서 arr.length 는 열의 길이를 의미, arr[x].length 는 행의 길이를 의미 )

 

 

 

 

 

 

 

 

 

 

실습 예제1

실습 예제1
예제 풀이

 

 

 

 

 

 

 

 

 

 

실습 예제2

실습 예제2

package array;

import java.util.Scanner;

public class Test02 {
	public static void main(String[] args) {
		
		Scanner input = new Scanner(System.in);
		int arr[] = new int[] {10, 54, 13, 17, 25, 30};
		String odd_even = null;
		System.out.print("짝수, 홀수 입력 : ");
		odd_even = input.next();
		
		for(int i : arr) {
			if(odd_even.equals("짝수")) {
				if(i%2 == 0) {
					System.out.println("짝수 : " + i);
				}
			}else if(odd_even.equals("홀수")) {
				if(i%2 == 1)
					System.out.println("홀수 : " + i);
			}
		}
		
	}
}

코드 실행
코드 실행

 

 

 

 

 

 

 

 

 

 

실습 예제3

실습 예제3 ( 짝수, 홀수 입력 시 인덱스 값이 짝수 및 홀수 인 값 출력 ) 및 예제 풀이3
홀수 입력시 코드 실행

 

728x90

 

 

 

 

 

 

while 문

while 문
while 문 사용법
break, continue ( break 는 이후의 문장을 실행하지 않고 바로 반복문을 탈출한다, continue 는 이후의 문장을 실행하지 않고 반복문의 시작 위치로 다시 이동하여 이후 문장을 실행한다 )
break 사용법
continue 사용법
while 문을 사용해서 입력받고 1부터 입력 값 까지의 숫자들을 더한 값을 구해주는 프로그램 예시 ( 참고용 )

 

 

 

 

 

 

 

 

 

 

do - while 문

do - while 문 ( 한번은 무조건 종속 문장을 실행한 뒤 조건식을 확인 )

 

 

 

 

 

 

 

 

 

 

실습 예제1

실습 예제1

 

 

예제 풀이1

package while_;

import java.util.Scanner;

public class Test01 {
	public static void main(String[] args) {
		
		String id = null, pw = null, inputId = null, inputPw = null;
		int choice = 0;
		
		Scanner input = new Scanner(System.in);
		
		while(choice != 3) {
			System.out.print("1. 로그인\n2. 회원가입\n3. 나가기\n>>> ");
			choice = input.nextInt();
			
			// 번호 선택이 올바르지 않은 경우
			if(choice<1 || choice>3) {
				System.out.println("입력 오류!!! 다시 입력하세요.");
				continue;
			} else if(choice == 2) { // 회원가입을 선택한 경우
				System.out.println("---회원가입---");
				System.out.print("아이디 입력 : ");
				id = input.next();
				System.out.print("비밀번호 입력 : ");
				pw = input.next();
				System.out.println("회원가입 완료!");
			} else if(choice == 1) { // 로그인을 선택한 경우
				
				System.out.print("아이디 입력 >>> ");
				inputId = input.next();
				if(inputId.equals(id)) { // 입력한 아이디가 DB에 존재하는 경우
					System.out.print("비밀번호 입력 >>> ");
					inputPw = input.next();
					if(inputPw.equals(pw)) { // PW까지 일치한 경우
						System.out.println(id + "님 로그인 성공!!!");
					}else { // PW가 불일치한 경우
						System.out.println("비밀번호 불일치!!!");
						continue;
					}
					
				} else { // 입력한 ID가 존재하지 않는 경우
					System.out.println("입력하신 아이디가 존재하지 않습니다.");
					continue;
				}
				
			}
		}
		
	}
}

코드 실행

 

 

 

 

 

 

 

 

 

실습 예제2

실습 예제2

 

 

실습 풀이2

package while_;

import java.util.Scanner;

public class Test02 {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		int coin=0, choice=0;
		
		// 금액 투입
		System.out.print("요금을 투입하세요 >>> ");
		coin = sc.nextInt();
		
		while(choice != 4) {
			// 메뉴판 출력 & 번호 선택
			System.out.println("1. 커피(200)\t2. 코코아(250)\t3. 반환\t4. 종료");
			System.out.print("메뉴를 선택하세요 >>> ");
			choice = sc.nextInt();
			
			switch(choice) {
			// 1번 선택
			case 1:
				if(coin > 200) {
					coin -= 200;
					System.out.println("맛있게 드세요\n남은 금액 : " + coin);
				} else {
					System.out.println("요금이 부족합니다.");
				}
				break;
				
			// 2번 선택
			case 2:
				if(coin > 250) {
					coin -= 250;
					System.out.println("맛있게 드세요\n남은 금액 : " + coin);
				}else {
					System.out.println("요금이 부족합니다.");
				}
				break;
			
			// 3번 선택
			case 3:
				System.out.println("반환된 거스름돈 : " + coin);
				coin = 0;
				break;
				
			// 4번 선택
			case 4:
				break;
				
			// 다른 번호 선택
			default:
				System.out.println("잘못된 입력 값입니다.");
			}
			
		}
		System.out.println("종료되었습니다.");
		
	}
}

코드 실행

 

 

 

 

 

 

 

 

 

실습 예제3

실습 예제3

 

 

예제 풀이3-1

package while_;

public class Test03 {
	public static void main(String[] args) {
		
		int rice = 1000 * 100;
		int mouseNum = 2;
		int day = 1;
		
		while(rice > 0) {
			
			// 쌀 먹기
			rice -= 20*mouseNum;
			
			// 쌀을 먹은 후 2배 증가
			// 더이상 먹을 쌀이 없으면 쥐의 숫자 증가X
			if((day%10==0) && rice>20*mouseNum) {
				mouseNum *= 2;
			}
			
			// 쌀을 다 먹은 후 일 수 증가
			day++;
		}
		
		System.out.println("걸린 일 수 : " + (day-1));
		System.out.println("총 쥐의 수 : " + mouseNum);
		
	}
}

코드 실행

 

 

예제 풀이3-2

package while_;

import java.util.Scanner;

public class Test03_2 {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		int num1=0, 
			num2=0, 
			least=0, 
			maximum=0;
		
		System.out.print("두 수 입력 : ");
		num1 = sc.nextInt();
		num2 = sc.nextInt();
		
		for (int i=1; i<=num1 && i<=num2 ; i++) {
			if((num1%i==0) && (num2%i==0)) {
				maximum = i;
			}
		}
		
		least = (num1 * num2) / maximum;
		
		System.out.println(num1 + "과 " + num2 + "의 최소공배수 : " + least);
		System.out.println(num1 + "과 " + num2 + "의 최대공약수 : " + maximum);
		
	}
}

코드 실행

 

 

예제 풀이3-3

예제 풀이 3-3

 

 

예제 풀이3-4

예제 풀이 4-5

 

 

 

 

 

 

 

 

실습 예제4

실습 예제4

 

 

예제 풀이4-1

예제 풀이 4-1

 

 

예제 풀이4-2

예제 풀이 4-2

 

728x90

 

 

 

 

 

 

for 문

for 문
for 문 예시, sum 값이 int 의 범위를 벗어나기 때문에 더 큰 정수형인 long 을 사용
for 문 예시
조건식은 공백이어도 상관 없음 ( 위 반복문에서 i 의 값이 9일때 출력 후 i 가 2씩 증가하니 11로 i 가 변경되고 i 값이 10 보다 크기때문에 for 문 탈출 )
홀수와 짝수 구분하는 간단한 프로그램

 

 

 

 

 

 

 

 

 

 

while 문

while 문 사용법

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

실습 예제

램덤한 0 ~ 9 까지의 수를 생성하여 5번의 기회 내에 랜덤 생성된 숫자를 맞추는 프로그램을 만드시오
1) 현재 남은 목숨 출력
2) 정답 시 맞춘 숫자, 추측 횟수 출력
3) 목숨이 다 닳는다면 정답을 출력

- 랜덤 숫자 생성 코드 -
double ranDouble = Math.random();
int ranInt = (int)(ranDouble*10)


오답 시 출력
추측 실패 시 출력
추측 성공 시 출력

 

 

예제 풀이

package for_;

import java.util.Scanner;

public class Test01 {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		/* 1~9 랜덤 숫자 변수 */
		double ranDouble = Math.random();
		int ranInt = (int)(ranDouble*10);
		
		/* 변수 선언 및 초기화 */
		int chance = 5;
		int guess = 0;
		int life = 5;
		boolean check;
		
		/* 숫자 추측 */
		for(int i=1; i<=10; i++) {
			System.out.println("현재 목숨 : " + life);
			System.out.print("숫자를 맞추세요(1~9) : ");
			guess = sc.nextInt();
			
			/* 추측 성공 여부 */
			if(guess == ranInt) {
				check = true;
			}else {
				check = false;
			}
			
			/* 성공, 실패 시 출력 메세지 */
			if( check ) {
				System.out.println();
				System.out.println("★★★★★숫자를 맞추셨습니다★★★★★");
				System.out.println("맞춘 숫자 : " + ranInt);
				System.out.println("추측 횟수 : " + i);
				break;
			}else {
				System.out.println();
				System.out.println("추측 실패, 목숨 -1");
				System.out.println();
				life -= 1;
			}
			
			/* 목숨 확인 및 게임진행 여부 */
			if(life>0) {
				continue;
			}else {
				System.out.println("목숨이 모두 닳았습니다.");
				System.out.println("정답은 " + ranInt + "입니다.");
				break;
			}
		}
		
	}
}
728x90

 

 

 

 

 

 

switch - case 문

switch - case 문 ( 쇼핑몰 등에서 회원 등급에 따라 쿠폰을 나눠주는 경우에 사용됨 ), if 문으로 대체가 가능하지만 switch - case 문을 사용하는 이유는 if 문보다 처리 속도가 빠르기 때문이다
switch - case 문 사용 예시 ( switch 의 조건문을 실행 후 결과 값을 case 에서 찾아서 출력, default 는 결과 값이 없는 경우 출력 )
break 를 주석처리하면 해당 케이스를 만난 이후로 모든 케이스의 내용을 출력함
case 2 의 값이 조건문의 결과 값과 같기 때문에 해당 코드 아래도 모두 출력되는 모습
입력 값을 switch - case 문을 사용하여 홀수인지 짝수인지 판별하는 프로그램
문자열도 switch - case 문으로 비교하여 사용할 수 있다

 

간단한 예제

간단한 예제
동작 예제

 

예제 풀이

switch - case 문 사용하여 풀이 ( while 문으로 반복 처리 )
콘솔창

 

728x90

 

 

 

 

 

 

if문

if문
if문 사용 예시 ( 각 if 제어문을 한번씩 다 돌고 출력 )
코드 진행 확인 ( 조건식이 true 이기 때문에 종속 문장이 실행된다 )
코드 진행 확인 ( 조건식이 false 이므로 종속문장을 실행하지 않고 다음 문장을 실행한다 )
첫번째 종속 문장 실행 ( num % 2 == 0 조건식이 true 이기 때문 )
두번째 종속문장 실행 ( num % 2 != 0 조건식이 true 이기 때문 )

 

 

 

 

 

if문 실습예제 1

1. 두 수를 입력 받아 큰 수를 출력 하시오

2. 세 수를 입력 받아 큰 수를 출력하시오

 

예제 풀이 1-1

두 수 비교 예제 풀이

 

예제 풀이 1-2

세 수 비교 예제 풀이 ( 최댓값을 변수로 선언하여 풀이도 가능, 최댓값을 변수로 선언하는 경우 몇번째 입력인지도 문자열 변수로 선언하여 몇번째 입력 값인지도 출력 가능 )

 

 

 

 

 

 

 

 

 

if - else 문

if - else문
if - else문 ( if 에서 조건식이 true 이기 때문에 else 문을 실행하지 않고 다음 코드 실행 )
if - else문 (&nbsp; if문 조건식이 false 이기 때문에 else문의 조건식을 확인, else문의 조건식이 true 이므로 해당 코드 실행 후 다음 코드를 실행 )

 

 

 

 

 

 

 

 

 

 

중첩된 if 문

if문 안에 종속된 if 문이 또 존재

 

 

중첩된 if문 예제 및 풀이

중첩된 if문 예제 ( 초기화에서 문제가 생길 수 있으므로 최종 출력에서 값이 초기화 됐는지 확인 후 출력 )
콘솔 입력 및 출력
만약 입력 값이 0이라면? 초기화 문제로 인식하기 때문에 해당 문제 해결 필요함
최종 값을 출력하기 전에 signal 이라는 변수를 추가하여 입력 값으로 0 이 들어온 경우 signal 변수를 1로 초기화하여 0 이라는 값이 정상적으로 입력받은 값이라는 것을 signal 변수의 0 과 1 로 구분하여 사용한다 ( signal 이 0 인 경우 : 입력 값이 0 이들어온 경우가 아닌 최초의 초기화 값인 0 이 적용되 있는 경우, signal 이 1 인 경우 : 입력 값이 0 으로 들어와 최초의 초기화 값인 0 에서 입력 값 0 으로 초기화가 진행된 경우 )

 

 

 

 

 

 

 

 

 

 

if - else if 문

if - else if문
else if문 사용 예시

 

 

실습 예제

 

예제 풀이

풀이 완료

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

예제 직접 생성하고 풀어보기

생성한 예제

 

package if_;

import java.util.Scanner;

public class Test5 {
	public static void main(String[] args) {
		
		System.out.println("-------메뉴판-------");
		System.out.println("1. 햄버거(9,000원)");
		System.out.println("2. 피자(11,000원)");
		System.out.println("3. 치킨(32,000원)");
		System.out.println("4. 금액 반환");
		System.out.println("--------------------");
		
		int coin = 0;
		int menuNum = 0;
		int menuCost = 0;
		String menuName = null;
		int whereNum = 0;
		String where = null;
		
		Scanner sc = new Scanner(System.in);
		System.out.print("금액을 투입하세요 : ");
		coin = sc.nextInt();
		
		if (coin >= 9000) {
			
			System.out.print("메뉴를 선택하세요 : ");
			menuNum = sc.nextInt();
			
			if (menuNum == 1) {
				menuCost = 9000;
				menuName = "햄버거";
			}else if (menuNum == 2) {
				menuCost = 11000;
				menuName = "피자";
			}else if (menuNum == 3) {
				menuCost = 32000;
				menuName = "치킨";
			}
			
			if (menuNum < 1 && menuNum > 4) {
				System.out.printf("올바른 주문이 아닙니다. %d원 반환\n", coin);
			}else if (menuCost > coin){
				System.out.printf("투입 금액이 부족합니다. %d원 반환\n", coin);
			}else if (menuNum >= 1 && menuNum <= 3){
				System.out.print("식사 방식을 선택하세요. (1. 포장, 2.매장식사)");
				whereNum = sc.nextInt();
				
				if (whereNum != 1 && whereNum != 2) {
					System.out.printf("선택 오류 %d원 반환\n", coin);
				}else {
					if(whereNum == 1) {
						where = "포장";
					}else {
						where = "매장식사";
					}
					
					System.out.println("------------------");
					System.out.printf("주문 메뉴 : %s\n", menuName);
					System.out.println(where);
					System.out.printf("거스름돈 : %d원\n", (coin - menuCost));
					System.out.println("------------------");
					
				}
				
			}else if (menuNum == 4)	System.out.printf("투입 금액 %d원 반환", coin);
			
		}else {
			System.out.printf("주문할 수 있는 메뉴 없음 %d원 반환\n", coin);
		}
		
	}
}

예제 풀이 ( 복잡 )

 

package if_;

import java.util.Scanner;

public class Test6 {
	public static void main(String[] args) {
		

        System.out.println("-------메뉴판-------");
        System.out.println("1. 햄버거(9,000원)");
        System.out.println("2. 피자(11,000원)");
        System.out.println("3. 치킨(32,000원)");
        System.out.println("4. 금액 반환");
        System.out.println("--------------------");

        int coin = 0;
        int menunum = 0;
        int menucost = 0;
        String menuname = null;
        int wherenum = 0;
        String where = null;
        Boolean isValid; //최소 금액이 넘었는지 확인


        /**
         * 금액 투입
         */
        Scanner sc = new Scanner(System.in);
        System.out.print("금액을 투입하세요 : ");
        coin = sc.nextInt();

        //coin이 최소 금액은 넘어야지 기본적으로 주문이 가능함.
        if (coin >= 9000) {
            isValid = true;
        }
        else{
            isValid = false;
        }

        /**
         * 메뉴 선택
         */
        if(isValid){

            System.out.print("메뉴를 선택하세요 : ");
            menunum = sc.nextInt();

            if (menunum == 1) {
                menucost = 9000;
                menuname = "햄버거";

            }else if (menunum == 2) {
                menucost = 11000;
                menuname = "피자";

            }else if (menunum == 3) {
                menucost = 32000;
                menuname = "치킨";
            }
            else{
                System.out.printf("올바른 주문이 아닙니다. %d원 반환", coin);
            }
        }
        else{
            System.out.printf("주문할 수 있는 메뉴 없음 %d원 반환\n", coin);
        }

        /**
         * 구매 가능 여부 확인
         */
        if ((menunum == 1) || (menunum == 2) || (menunum == 3)) {

            if ((coin - menucost) >= 0) {

                System.out.print("식사 방식을 선택하세요. (1. 포장, 2.매장식사)");
                wherenum = sc.nextInt();
                if (wherenum == 1) {
                    where = "포장";
                }else{
                    where = "매장식사";
                }

                System.out.println("------------------");
                System.out.printf("주문 메뉴 : %s\n", menuname);
                System.out.println(where);
                System.out.printf("거스름돈 : %d원\n", (coin - menucost));
                System.out.println("------------------");
            }
            else{

                System.out.printf("투입 금액이 부족합니다. %d원 반환\n", coin);
            }
        }
    }
}

예제 풀이 ( 깔끔 )

728x90

+ Recent posts