4. 조건문과 반복문
4-1. 조건문 : if문, switch문
제어문: 실행 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 해주는 것.
- 조건문 : 조건식에 따라 다른 실행문을 실행하기 위해 사용.
- 반복문 : 어떤 작업이 반복적으로 실행되도록 할 때 사용.
if문
조건식의 결과에 따라 블록 실행 여부가 결정됨.
조건식에는 true/false 산출할 수 있는 연산식이나 boolean타입 변수.
if ( 조건식 ){ 실행문A, B, C, ... } 실행문Z
조건식이 true일 경우 실행할 문장이 하나라면, 중괄호 생략 가능.if - else문
조건식의 결과에 따라 실행 블록을 선택.
if ( 조건식 ){ 실행문A } else{ 실행문B } 실행문Cif - else if - else문
조건문이 여러개인 if문.
else if문의 수는 제한이 없음.
여러 개의 조건식 중 true가 되는 블록만 실행한 후 전체 if문을 벗어남.
if ( 조건식 ){ 실행문A } else if{ 실행문B } else{ 실행문C } 실행문D
package sec01.exam03; public class IfElseIfElseExample { public static void main(String[] args) { int score = 75; if (score>=90) { System.out.println("점수가 90~100 입니다."); System.out.println("등급은 A 입니다."); } else if (score>=80) { System.out.println("점수가 80~89 입니다."); System.out.println("등급은 B 입니다."); } else if (score>=70) { System.out.println("점수가 70~79 입니다."); System.out.println("등급은 C 입니다."); } else{ System.out.println("점수가 70 미만입니다."); System.out.println("등급은 D 입니다."); } } }
실행결과
+) 난수 생성
- Math.random() 메소드
0.0 <= Math.random() <1.0 인, double 타입의 난수 하나 리턴함.
이를 이용하면,
0~9의 난수 생성 = (int) (Math.random() 10)
1~10의 난수 생성= (int) (Math.random() 10) + 1
∴ a부터 시작하는 n개의 정수 중 랜덤: (int) (Math.random() * n) + a
주사위 번호 랜덤 생성
package sec01.exam04; public class IfDiceExample { public static void main(String[] args) { int num=(int)(Math.random()*6)+1; if (num==1) { System.out.println("1번이 나왔습니다."); } else if (num==2) { System.out.println("2번이 나왔습니다."); } else if (num==3) { System.out.println("3번이 나왔습니다."); } else if (num==4) { System.out.println("4번이 나왔습니다."); } else if (num==5) { System.out.println("5번이 나왔습니다."); }else { System.out.println("6번이 나왔습니다."); } } }
실행결과 ex)
switch문
조건 제어문. 변수가 어떤 값을 갖느냐에 따라 실행문이 선택됨.
만약 switch문의 괄호 안의 변수 값과 동일한 값을 갖는 case가 없다면 default로 가서 실행문을 실행함. (생략가능)
case끝의 break : 다음 case를 실행하지 않고 switch문 탈출함. 없다면 다음 case가 값에 상관없이 연달아서 실행됨.
위의 주사위 예제를 switch문으로
package sec01.exam05; public class SwitchExample { public static void main(String[] args) { int num=(int)(Math.random()+1); switch(num) { case 1: System.out.println("1번이 나왔습니다."); break; case 2: System.out.println("2번이 나왔습니다."); break; case 3: System.out.println("3번이 나왔습니다."); break; case 4: System.out.println("4번이 나왔습니다."); break; case 5: System.out.println("5번이 나왔습니다."); break; default: System.out.println("6번이 나왔습니다."); break; } } }
실행결과
char타입 switch문
package sec01.exam07; public class SwitchCharExample { public static void main(String[] args) { char grade='B'; switch(grade) { case 'A': case 'a': System.out.println("우수 회원입니다."); break; case 'B': case 'b': System.out.println("일반 회원입니다."); break; default: System.out.println("손님입니다."); } } }
실행결과
String 타입 switch문
package sec01.exam08; public class SwitchStringExample { public static void main(String[] args) { String position ="과장"; switch(position) { case "부장": System.out.println("700만원"); break; case "과장": System.out.println("500만원"); break; default: System.out.println("300만원"); } } }
실행결과
4-2. 반복문 : for문, while문, do-while문
반복문 : 어떤 작업이 반복적으로 실행되도록 할 때 사용.
코드가 간결해져 개발 시간을 줄이고, 에러 확률도 줄여줌.
루핑 : 제어문블록 실행 완료 후 제어문 처음으로 다시 되돌아가 반복 실행.for문
주로 반복 횟수를 알고 있을 때 사용.
for문을 이용하여 1~100까지의 정수 합
package sec02.exam03; public class ForSumFrom1To100Example2 { public static void main(String[] args) { int sum=0; int i=0; for(i=1; i<=100; i++) { sum+=i; } System.out.println("1~"+ (i-1) + " 합: " + sum); } }
실행결과
0.0부터 1.0까지 0.1씩 키우는 float 합
package sec02.exam04; public class ForFloatCounterExample { public static void main(String[] args) { for(float x=0.1f; x<=1.0f; x+=0.1f) { System.out.println(x); } } }
코드를 봤을 때는 10번 반복할 것 같지만, 실제 더하는 0.1f값은 0.1보다 약간 큰 수이므로 9번만 반복한다.
실행결과
중첩 for문
for문 안에 for문을 내포.
구구단
package sec02.exam05; public class ForMultiplicationTableExample { public static void main(String[] args) { for(int m=2;m<=9;m++) { System.out.println("*** " + m +"단 ***"); for(int n=1;n<=9;n++) { System.out.println(m + " x " + n + " = " + (m*n)); } System.out.println("-------------"); } } }
실행결과 ex)
while문
주로 조건에 따라 반복할 때 사용. 조건식이 true일 경우 반복하며, 조건식에는 비교/논리 연산식이 주로 온다.
while문을 이용하여 1~100까지의 정수 합
package sec02.exam07; public class WhileSumFrom1To100Example { public static void main(String[] args) { int sum=0; int i=1; while(i<=100) { sum += i; i++; } System.out.println("1~"+ (i-1) + " 합: " + sum); } }
실행결과
+) 무한루프
while( true ){ 실행문; }do-while문
조건을 나중에 검사하는 while문.
블록 내부의 실행문을 우선 실행한 후 반복 실행을 계속할지 결정.
do{실행문;}while(조건식);break문
반복문의 실행을 중지할 때 사용. 대개 if문과 같이 사용됨.
반복문이 중첩되어 있는 경우,
-가장 가까운 반복문만 종료하고 바깥쪽 반복문은 종료하지 않음.
-바깥 반복문도 종료: 바깥쪽 반복문에 이름을 붙인 후, 'break 이름;'
package sec02.exam09; public class BreakOutterExample { public static void main(String[] args) { Outter: for(char upper='A'; upper<='Z'; upper++) { for(char lower='a'; lower<='z';lower++) { System.out.println(upper+"-"+lower); if (lower=='g') { break Outter; } } } System.out.println("프로그램 실행 종료"); } }
실행결과
continue문
for, while, do-while문에서만 사용됨.
continue문이 실행되면 for문의 증감식, while/do-while문의 조건식으로 이동.
반복문을 종료하지 않고 계속 반복을 수행.
대개 if문과 같이 사용됨.
예제.1~10까지 짝수만 출력
package sec02.exam10; public class ContinueExample { public static void main(String[] args) { for(int i=1;i<=10;i++) { if(i%2 != 0) { continue; } System.out.println(i); } } }
실행결과
'JAVA' 카테고리의 다른 글
JAVA 마스터가 되기 위한 여정-7 (0) | 2023.02.21 |
---|---|
혼공자6.클래스, 필드, 생성자, 메소드,오버로딩, 인스턴스 멤버와 정적 멤버, 상수, 접근제한자, Getter와 Setter (0) | 2023.02.21 |
혼공자3.연산자(단항,이항,삼항(조건연산식))와 연산식 (0) | 2023.02.20 |
혼공자2.변수와 타입, 자동&강제타입변환, 입출력, System.in.read단점 및 해결책 (0) | 2023.02.20 |
혼공자1.자바시작하기 (0) | 2023.02.20 |