while 문while 문 사용법break, continue ( break 는 이후의 문장을 실행하지 않고 바로 반복문을 탈출한다, continue 는 이후의 문장을 실행하지 않고 반복문의 시작 위치로 다시 이동하여 이후 문장을 실행한다 )break 사용법continue 사용법while 문을 사용해서 입력받고 1부터 입력 값 까지의 숫자들을 더한 값을 구해주는 프로그램 예시 ( 참고용 )
do - while 문
do - while 문 ( 한번은 무조건 종속 문장을 실행한 뒤 조건식을 확인 )
실습 예제1
실습 예제1
예제 풀이1
package while_;
import java.util.Scanner;
publicclassTest01{
publicstaticvoidmain(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;
} elseif(choice == 2) { // 회원가입을 선택한 경우
System.out.println("---회원가입---");
System.out.print("아이디 입력 : ");
id = input.next();
System.out.print("비밀번호 입력 : ");
pw = input.next();
System.out.println("회원가입 완료!");
} elseif(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;
}
}
}
}
}
package while_;
publicclassTest03{
publicstaticvoidmain(String[] args){
int rice = 1000 * 100;
int mouseNum = 2;
int day = 1;
while(rice > 0) {
// 쌀 먹기
rice -= 20*mouseNum;
// 쌀을 먹은 후 2배 증가// 더이상 먹을 쌀이 없으면 쥐의 숫자 증가Xif((day%10==0) && rice>20*mouseNum) {
mouseNum *= 2;
}
// 쌀을 다 먹은 후 일 수 증가
day++;
}
System.out.println("걸린 일 수 : " + (day-1));
System.out.println("총 쥐의 수 : " + mouseNum);
}
}
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;
publicclassTest01{
publicstaticvoidmain(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 으로 초기화가 진행된 경우 )