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