Java /day06 / 23.08.30(수) / (핀테크) Spring 및 Ai 기반 핀테크 프로젝트 구축

허니몬·2023년 8월 30일
post-thumbnail

ch07_while


while 문

while( 조건식 ) {
	실행 코드
}

WhileEx01

// 조건식으로 정지
int cnt = 1;
while (cnt <= 3) {
	System.out.println(cnt);
	cnt++;
}

// if 문 break; 로 정지 
cnt = 1;
while (true) {
	if (cnt > 5)
		break;
	System.out.println(cnt);
	cnt++;
}
System.out.println("cnt : " + cnt);

// boolean 변수로 정지
cnt = 1;
boolean run = true;
while (run) {
	System.out.println(cnt);
	cnt++;
	if (cnt > 5)
		run = false;
}
System.out.println("cnt : " + cnt);


WhileEx02

int data = -1;
// 데이터 필터링 >> 정수만 받음, 음수는 무한반복
// 조건식 정지
while(data<0) {
	System.out.print("숫자 입력 >> ");
	data = sc.nextInt();
}
System.out.println("data : " + data);

// if 문 break; 정지
while(true) {
	System.out.print("숫자 입력 >> ");
	data = sc.nextInt();
	if(data >=0) break;
}
System.out.println("data : " + data);

// boolean 값 정지
boolean run = true;
while(run) {
	System.out.print("숫자 입력 >> ");
	data = sc.nextInt();
	if(data >=0) run = false;
}
System.out.println("data : " + data);
System.out.println();


WhileEx03

do while 문

do {
	실행코드
} while ( 조건식 ) ;
int value = 0; // 입력
int tot = 0; // 합

do {
	System.out.println("숫자 입력(종료 : 0) >> ");
	value = sc.nextInt();
	tot += value;
} while (value != 0);
System.out.println("입력값의 합 : " + tot);


WhileEx04

int out = 0;
int in = 0;
while (out < 3) { // out : 0
	in = 0; // 재설정
	while (in < 5) { // 0 1 2 3 4 5
		System.out.print(in + 1 + " ");
		in++;
	}
	System.out.println();
	++out;
}

int select = 0;

while (true) {

	for (int heart = 3; heart > 0; heart--) {
		System.out.println("생명 : " + heart);
	}

	System.out.print("정지(0) >> ");
	select = sc.nextInt();
	if (select == 0)
		break;

}


QuizWhile

#1

나이를 입력받아서 출력하는 코드를 작성

  • 0 ~ 130 사이만 가능합니다
// 내 코드
while (true) {
	System.out.print("나이 입력 >> ");
	int age = sc.nextInt();
	if (age >= 0 && age <= 130) {
		System.out.println("나이 : " + age);
	} else {
		System.out.println("입력 오류");
		break;
	}
}
// 강사님 코드
int age = 0;
while (true) {
	System.out.println("나이 입력 > ");
	age = sc.nextInt();
	if (age >= 0 && age <= 130)
		break;
	System.out.println("나이는 0 ~ 130 사이만 가능합니다.");
}
System.out.println("나이 : " + age + " 세");

#2

성별을 입력받아서 출력하는 코드를 작성

  • 남성, 여성만 가능
// 내 코드
while (true) {
	System.out.print("성별 입력 >> ");
	String gen = sc.next();
	if (gen.equals("남성") || gen.equals("여성")) {
		System.out.println("성별 : " + gen);
	} else {
		System.out.println("입력 오류");
		break;
	}
}

// 강사님 코드
String gender = "";
while (true) {
	System.out.println("성별 입력 > ");
	gender = sc.next();
	if (gender.equals("남성") || gender.equals("여성"))
		break;
}
System.out.println("성별 : " + gender);

#3

  • 치즈 10Box 가 저장되어 있는 창고에 1쌍의 쥐가 살고 있다
  • 쥐 한마리가 하루에 먹을수 있는 치즈의 양은 20g 이고,
  • 치즈를 먹은 10일째 되는 날마다 쥐의 객체수가 2배씩 증가
  • 몇일만에 창고의 치즈를 모두 먹게되고, 이때까지의 쥐의 객체수를 구하는 코드를 작성
  • 치즈 1Box : 1kg
// 내 코드
int r = 2;
int c = 10000;
int d = 0;
boolean run = true;
while (run) {
	d++;
	System.out.println("day : " + d + "일");
	if (d % 10 == 0)
		r *= 2;
	c = c - r * 20;
	System.out.println("쥐 객체수 : " + r + " 마리");
	if (c > 0)
		System.out.println("남은 치즈 양 : " + c + "g");
	System.out.println();
	if (c < 0) {
		System.out.println("치즈 끝");
		break;
	}
}

// 강사님 코드
int cheeseBox = 10;
int cheeseGram = cheeseBox * 1000;
int mouse = 2; // 쥐
int day = 0; // 날짜

while (cheeseGram > 0) {
	++day;
	int eat = mouse * 20;
	cheeseGram -= eat;
	System.out.println(day + "일 - 먹은양 : " + eat + " - 남은 양 : " + cheeseGram);
	if (day % 10 == 0) {
		mouse *= 2;
		System.out.println("쥐 객체수 증가 : " + mouse);
	}
}
System.out.println("총 : " + day + "일 - 객체수 : " + mouse);

#4

집주소, 자주가는 장소 한군데씩을 저장하고, 확인할 수 있는 코드를 작성하세요

  • 1.집주소 등록 2.장소 등록 3.확인
    0 이 입력되면 종료 됩니다
    Ex) 1.집주소 등록 2.장소 등록 3.확인 > 1
    집주소 입력 > 서울시 오디?
    1.집주소 등록 2.장소 등록 3.확인 > 3
    집 : 서울시 오디?
    장소 :
    1.집주소 등록 2.장소 등록 3.확인 > 2
    장소 입력 > 어딘지 모름
    1.집주소 등록 2.장소 등록 3.확인 > 3
    집 : 서울시 오디?
    장소 : 어딘지 모름
    1.집주소 등록 2.장소 등록 3.확인 > 0
    - Program end -
// 내 코드
String houseAdr = "";
String place = "";
int select = 0;
boolean run = true;
while (run) {
	System.out.println("--- Main Menu---");
	System.out.println("1. 집주소 등록\n" + "2. 장소 등록\n" + "3. 확인\n" + "0. 종료");
	System.out.print("항목 선택 > ");
	select = sc.nextInt();
	System.out.println();

	switch (select) {
	case 0:
		System.out.println("- Program end -");
		run = false;
		break;
	case 1:
		System.out.print("집주소 입력 > ");
		sc.nextLine();
		houseAdr = sc.nextLine();
		System.out.println("집주소 입력 완료\n");
		break;
	case 2:
		System.out.print("장소 입력 > ");
		sc.nextLine();
		place = sc.nextLine();
		System.out.println("장소 입력 완료\n");
		break;
	case 3:
		System.out.println("--- 입력 장소 확인 ---");
		System.out.println("집 : " + houseAdr);
		System.out.println("장소 : " + place);
		System.out.println();
		break;
	default:
		System.out.println("입력 오류\n" + "1, 2, 3, 0 중 선택");
		System.out.println();
	}
}
        

// 강사님 코드
String home = "";
String place = "";
int select = 0;
boolean run = true;

while (run) {
	System.out.println("1.집주소 등록 2.장소 등록 3.확인 >> ");
	select = sc.nextInt();
	if (select >= 1 && select <= 3)
		sc.nextLine();

	switch (select) {
	case 1: // 집주소 등록
		System.out.println("집주소 입력 > ");
		home = sc.nextLine();
		break;
	case 2: // 장소 등록
		System.out.println("장소 입력 > ");
		place = sc.nextLine();
		break;
	case 3: // 등록 확인
		System.out.println("집   : " + home);
		System.out.println("장소 : " + place);
		break;
	case 0:
		run = false;
		break;
	default:
		System.out.println("선택 오류~");
	} // switch
	System.out.println();
} // while
System.out.println("- Program end - ");


ch08_addition


ControlAdd

삼항 연산자

  • ( 조건식 ) ? 참 : 거짓;

    짧을 때 사용하면 가독성 좋음

break

  • 제어문을 강제로 종료 시킬 때 사용
  • break 문과 가장 가까운 제어문 하나만 종료

continue

  • 현재 진행중인 반복문의 실행을 멈추고, 다음 반복을 진행
// 삼항 연산자
int data = 7;
String res = (data % 2 == 1) ? "홀수" : "짝수";
System.out.println(data + " : " + res);

System.out.println();

// break
for (int i = 1; i <= 3; i++) {
	System.out.print(i + "회전 : ");
	for (int j = 1; i <= 10; j++) {
		System.out.print(j + " ");
		if (j == 7)
			break;
	}

}

// continue
// 무한 반복 주의
int step = 0;
while (step < 10) {
	++step;
	if (step % 3 == 0) {
    	System.out.println("jump~");
		continue;
	}
	System.out.println(step);
}


P05_random


RandomEx

import java.util.Random;
// Random class 객체 생성
Random random = new Random();
		
// nextInt : int 범위에서 생성
int va = random.nextInt();
System.out.println("va : "+va);
		
// nextInt( bound ) : 0 ~ (bound - 1) 사이에서 생성
// 주의사항 : 해당 숫자 포함 X
for(int i=0; i<5;i++) {
	int vb = random.nextInt(10);
	System.out.println("vb : "+vb);
}
System.out.println();
		
// nextDouble() : 0.0~ 0.9999999...
// 1.0 포함 X
double vc = random.nextDouble();
System.out.println("vc : "+vc);
		
double vd = random.nextInt(100) / 10.0;
System.out.println("vd : "+vd);
	
// 소문자 알파벳
char ch = (char)(random.nextInt(26) + 97);
System.out.println("ch : "+ch);


QuizRandom

#1

2 ~ 50 사이의 랜덤값 5개를 출력하는 코드를 작성

// 내 코드
for(int i=0;i<5;i++) {
	int va = r.nextInt(49)+2;
	System.out.println("va : " + va);
}

// 강사님 코드
// 범위 : (마지막 값 - 시작 값 +1) + 시작 값
for(int i=0; i<5;i++) {
	int data = r.nextInt(49) +2;
	System.out.print(data +" ");
}
System.out.println();
System.out.println();

#2

  • 주사위 값을 가지는 변수 2개를 선언하고,
    1 ~ 6 사이의 랜덤값으로 초기화
  • 두개의 주사위에 한번에 같은 값이 들어갈때 까지의 시도 횟수를 구하는 코드를 작성
// 내 코드
int cnt = 0;
while(true) {
	int dice1 = r.nextInt(6) +1;
	int dice2 = r.nextInt(6) +1;
	cnt++;
	System.out.println(cnt + "회");
	System.out.println("dice1 : "+ dice1);
	System.out.println("dice2 : "+ dice2);
	if(dice1==dice2) {
		break;
	}
}
		
// 강사님 코드
int count =0;
while(true) {
	++count;
	int diceA = r.nextInt(6)+1;
	int diceB = r.nextInt(6)+1;
	System.out.println(count + " 회 : "+ diceA + " - " + diceB);
	if(diceA==diceB)
		break;
}

#3

사용자 확인 문자열을 생성하는 코드를 작성하세요

  • 확인 문자열 : 0 ~ 9 , A ~ Z 의 조합 5개로 이루어져 있습니다
    Ex) A7G3B , KATIA , 70384 .....
// 내 코드
String check = "";
for(int i=0;i<5;i++) {
	int select = r.nextInt(2);
	if(select==0) {
		check += r.nextInt(10);
	}else {
		check += (char) (r.nextInt(26) + 65);
	}
}
System.out.println("확인 문자열 : " + check);
		
// 강사님 코드
String userCode ="";
for(int i=0;i<5;i++) {
	boolean select = r.nextBoolean();
	if(select) {
		userCode += (char)(r.nextInt(10) +'0'); //문자열 0-9
		//userCode += r.nextInt(10); // 숫자 0-9
	} else {
		userCode += (char)(r.nextInt('Z' - 'A' +1)+'A');
	}
}
System.out.println(userCode);

#4

	// 컴퓨터와 가위, 바위, 보 게임을 진행하는 코드를 작성하세요
	// - 3승 또는 3패하면 종료됩니다
	// - 1.가위 2.바위 3.보
// 내 코드
int victory = 0;
int defeat = 0;
Scanner sc = new Scanner(System.in);
boolean game = true;
String gbbu = "";
String gbbc = "";
while (game) {
	System.out.println("-- 가위 바위 보 --");
	System.out.println("3승 또는 3패하면 종료");
	System.out.println("------ 선택 ------");
	System.out.println("1.가위 2.바위 3.보");
	int select = sc.nextInt();
	int computer = r.nextInt(3) + 1;
	switch (select) {
	case 1:
		gbbu = "가위";
		break;
	case 2:
		gbbu = "바위";
		break;
	case 3:
		gbbu = "보";
		break;
	default:
		System.out.println("1, 2, 3 중 선택");
		System.out.println();
		continue;
	}
	switch (computer) {
	case 1:
		gbbc = "가위";
		break;
	case 2:
		gbbc = "바위";
		break;
	case 3:
		gbbc = "보";
		break;
	}
	System.out.println("나 : " + select + ", " + gbbu);
	System.out.println("컴 : " + computer + ", " + gbbc);
	if (select == 1 && computer == 3 || select == 2 && computer == 1 || select == 3 && computer == 2) {
		System.out.println("결과 : 이김");
		victory++;
	} else if (select == 1 && computer == 2 || select == 2 && computer == 3 || select == 3 && computer == 1) {
		System.out.println("결과 : 짐");
		defeat++;
	} else if (select == computer) {
		System.out.println("결과 : 비김");
	}
	System.out.println("승리 : " + victory + " 회");
	System.out.println("패배 : " + defeat + " 회");
	System.out.println();
	if (victory == 3) {
		System.out.println("이킴 ㅋㅋ");
		break;
	}
	if (defeat == 3) {
		System.out.println("짐 ㅠㅠ");
		break;
	}
}

// 강사님 코드
int user = 0;  // 사용자
int com = 0;   // 컴퓨터
int win = 0;   // 승
int draw = 0;  // 무
int lose = 0;  // 패
		
while(win < 3 && lose < 3) {
		
	// com 값 설정
	com = r.nextInt(3)+1;
	//System.out.println("com : " + com);
			
	// 사용자 값 입력
	while(true) {
		System.out.print("1.가위  2.바위  3보 >> ");
		user = sc.nextInt();
		if(user>=1 && user<=3)
			break;
	}
	System.out.println();
			
	// 선택값 문자열 설정
	String userStn = "";
	if(user == 1) userStn = "가위";
	else if(user == 2) userStn = "바위";
	else userStn = "보";
			
	String comStn = "";
	if(com == 1) comStn = "가위";
	else if(com == 2) comStn = "바위";
	else comStn = "보";
			
	System.out.println("사용자 : " + userStn + " - com : " + comStn);
			
	// 결과
	if(user == 2 && com == 1) {
		System.out.println("승");
		++win;
	} else if(user == 3 && com == 2) {
		System.out.println("승");
		++win;
	} else if(user == 1 && com == 3) {
		System.out.println("승");
		++win;
	} else if(user == com) {
		System.out.println("무");
		++draw;
	} else {
		System.out.println("패");
		++lose;
	}
	System.out.println();	
		
} // while(win < 3 && lose < 3) end
		
// 최종 결과
System.out.println(win + "승 " + draw + "무 " + lose + "패");
if(win > 2) {
	System.out.println("당신의 승리 ㅠㅠ");
} else {
	System.out.println("내가 이겼어요..^^");
}


QuizVendingMachine


  1.콜라(1000)  2.커피(300)

-------------------------------
돈을 넣어주세요 : 1500
1.콜라(1000) 2.커피(300) 선택 > 1
콜라가 나옵니다~
현재 잔액 : 500원
재구매 하시겠어요(0.no 1.yes) > 1
1.콜라(1000) 2.커피(300) 선택 > 1
금액이 부족합니다..
현재 잔액 : 500원
재구매 하시겠어요(0.no 1.yes) > 1
1.콜라(1000) 2.커피(300) 선택 > 2
커피가 나옵니다~
거스름 돈 : 200원

// 강사님 코드
Scanner sc = new Scanner(System.in);
int coin = 0; // 금액
int coffee = 300; // 커피
int coke = 1000;   // 콜라
		
System.out.println("콜라(" + coke + ") , 커피(" + coffee + ")");
System.out.print("금액을 투입하세요 >> ");
coin = sc.nextInt();
		
System.out.println();
		
while(coin >= coffee) {
			
	System.out.print("1.콜라(" + coke + ")  2.커피(" + coffee + ")  선택 > ");
	int select = sc.nextInt();
	System.out.println();
			
	switch(select) {
	case 1: // 콜라
		if(coin >= coke) {
			coin -= coke;
			System.out.println("콜라가 나옵니다..");
		} else {
			System.out.println("금액이 부족합니다");
		}
		break;
	case 2: // 커피
		if(coin >= coffee) {
			coin -= coffee;
			System.out.println("커피가 나옵니다..");
		} else {
			System.out.println("금액이 부족합니다");
		}
		break;
	default:
		System.out.println("없는 제품입니다~");
	} // switch(select) end
	
	// 추가 구매
	int add = 0; // 0 : 종료, 1 : 추가 구매
	if(coin >= coffee) {
		System.out.println("현재 잔액 : " + coin);
		while(true) {
			System.out.print("재구매 하시겠어요(0.no  1.yes) > ");
			add = sc.nextInt();
			if(add == 0 || add == 1)
				break;
		}
	}
	if(add == 0) break;
			
			
} // while(coin >= coffee) end
		
System.out.println("거스름 돈 : " + coin + " 원");

profile
Fintech

0개의 댓글