# 제어문(control flow statements)
: 자바 프로그램이 원하는 결과를 얻기 위해서는 프로그램의 순차적인 흐름을 제어해야만 할 경우가 생긴다. 이 때 사용하는 명령문을 제어문이라고 하며, 이러한 제어문에는 조건문, 반복문 등이 있다. 이러한 제어문에 속하는 명령문들은 중괄호({})로 둘러싸여 있으며, 이러한 중괄호 영역을 블록(block)이라고 한다. (한 줄짜리는 중괄호 생략 가능하다.)
# 조건문(conditional statements)
: 조건문은 주어진 조건식의 결과에 따라 별도의 명령을 수행하도록 제어하는 명령문이다. 조건문 중에서도 가장 기본이 되는 명령문은 바로 if 문이다.
if (조건식) {
조건식의 결과가 참일 때 실행하고자 하는 명령문;
}
출처 : http://tcpschool.com/java/java_control_condition
* if문
1. if문
: if 문은 조건식의 결과가 참(true)이면 주어진 명령문을 실행하며, 거짓(false)이면 아무것도 실행하지 않는다.
⇒ 활용예시
package blog;
import java.util.Scanner;
public class Wonderful21 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner exp = new Scanner(System.in);
System.out.print("한 개의 숫자를 입력 : ");
int count = exp.nextInt();
if(count <0);
System.out.println(count+"은(는) 음수입니다.");
}
}
package blog;
import java.util.Scanner;
public class Wonderful22 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner exp = new Scanner(System.in);
System.out.print("성적을 입력하세요 : ");
int grade = exp.nextInt();
if(grade>=90) {
System.out.println("축하합니다.");
System.out.println("A학점 입니다.");
}
System.out.println("수고하셨습니다.");
}
}
2. if ~ else
: if 문과 함께 사용하는 else 문은 if 문과는 반대로 주어진 조건식의 결과가 거짓(false)이면 주어진 명령문을 실행한다.
if (조건식) {
조건식의 결과가 참일 때 실행하고자 하는 명령문;
} else {
조건식의 결과가 거짓일 때 실행하고자 하는 명령문;
}
⇒ 활용예시
package blog;
import java.util.Scanner;
public class Wonderful23 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner exp = new Scanner(System.in);
System.out.print("성적을 입력하세요 : ");
int grade = exp.nextInt();
if(grade>=90) {
System.out.println("축하합니다.");
System.out.println("A학점 입니다.");
}
else {
System.out.println("A학점 취득 실패.");
}
System.out.println("수고하셨습니다.");
}
}
⇒ 활용예시
package blog;
import java.util.Scanner;
public class Wonderful24 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner exp = new Scanner(System.in);
System.out.print("성적을 입력하세요 : ");
int grade = exp.nextInt();
if(grade>=90) {
System.out.println("A학점");
}else if(grade>=80) {
System.out.println("B학점");
}else if(grade>=70) {
System.out.println("C학점");
}else if(grade>=60) {
System.out.println("D학점");
}else {
System.out.println("F학점");
System.out.println("학점 취득 실패");
}
}
}
package blog;
import java.util.Scanner;
public class Wonderful25 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner exp = new Scanner(System.in);
System.out.println("숫자를 입력 : ");
int count = exp.nextInt();
if(count<0) {
System.out.print("입력된 수"+count);
System.out.println("은(는) 음수입니다.");
}else if(count==0) {
System.out.println("입력된 수는 0 입니다.");
}else {
System.out.print("입력된 수 "+count);
System.out.println("은(는) 양수입니다.");
}
}
}
package blog;
import java.util.Scanner;
public class Wonderful26 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner exp = new Scanner(System.in);
System.out.println("성적을 입력하세요 : ");
int score = exp.nextInt();
if(score>=80) {
System.out.println("우수 학점군에 속합니다.");
if(score>=90)
System.out.println("A학점 입니다.");
else
System.out.println("B학점 입니다.");
}
else {
if(score>=60) {
System.out.println("보통 학점군에 속합니다.");
if(score>=70)
System.out.println("C학점 입니다.");
else
System.out.println("D학점 입니다.");
}
else
System.out.println("학점 취득 실패");
}
}
}
+) 선택문-조건식
⇒ 활용예시
package blog;
import java.util.Scanner;
public class Wonderful27 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner exp = new Scanner(System.in);
System.out.println("월을 입력하세요 : ");
int month = exp.nextInt();
if(3<= month&&month<=5) {
System.out.println("봄 입니다.");
}else if(6<=month&&month<=8) {
System.out.println("여름 입니다.");
}else if(9<=month&&month<=11) {
System.out.println("가을 입니다.");
}else if(1== month || month ==2 || month==12) {
System.out.println("겨울 입니다.");
}else {
System.out.println("해당되는 계절이 없습니다.");
}
}
}
* switch문
: switch 문은 if ~ else 문과 마찬가지로 주어진 조건 값의 결과에 따라 프로그램이 다른 명령을 수행하도록 하는 조건문이다. 이러한 switch 문은 if ~ else 문보다 가독성이 더 좋으며, 컴파일러가 최적화를 쉽게 할 수 있어 속도 또한 빠른 편이다. 하지만 switch 문의 조건 값으로는 int형으로 승격할 수 있는(integer promotion) 값만이 사용될 수 있다. (case 절로 다중선택 가능.)
- 즉, 자바에서는 swich 문의 조건 값으로 byte형, short형, char형, int형의 변수나 리터럴을 사용할 수 있다. 또한, 이러한 기본 타입에 해당하는 데이터를 객체로 포장해 주는 래퍼 클래스(Wrapper class) 중에서 위에 해당하는 Byte, Short, Character, Integer 클래스의 객체도 사용할 수 있다. 그리고 enum 키워드를 사용한 열거체(enumeration type)와 String 클래스의 객체도 사용할 수 있다. 따라서 switch 문은 if / else 문보다는 사용할 수 있는 상황이 적다.
switch (조건 값) {
case 값1:
조건 값이 값1일 때 실행하고자 하는 명령문;
break;
case 값2:
조건 값이 값2일 때 실행하고자 하는 명령문;
break;
...
default:
조건 값이 어떠한 case 절에도 해당하지 않을 때 실행하고자 하는 명령문;
break;
}
+) default 절은 조건 값이 위에 나열된 어떠한 case 절에도 해당하지 않을 때만 실행된다. 이 절은 반드시 존재해야 하는 것은 아니며 필요할 때만 선언할 수 있다.
⇒ 활용예시
package blog;
import java.util.Scanner;
public class Wonderful28 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner exp = new Scanner(System.in);
System.out.println("월을 입력 하세요 : ");
int month = exp.nextInt();
String MtoS;
switch(month) {
case 12:
case 1:
case 2://하나의 case문과 같은 효과
MtoS = "겨울 입니다.";
break;
case 3:
case 4:
case 5:
MtoS = "봄 입니다.";
break;
case 6:
case 7:
case 8:
MtoS = "여름 입니다.";
break;
case 9:
System.out.println("멋진 9월과 ");
case 10:
System.out.println("아름다운 10월과 ");
case 11:
System.out.println("낙엽의 11월은 ");
MtoS = "가을 입니다.";
break;
default://1~12의 숫자가 아닐 경우 수행
MtoS = "1~12월을 벗어난 달입니다.";
break;
}
System.out.println(MtoS);
}
}
⇒ 활용예시
package blog;
public class Wonderful29 {
public static void main(String[] args) {
// TODO Auto-generated method stub
char c = 'A';
//char c ='a'
switch(c){
case 'A':
case 'B'://case문의 값으로 문자 지정
System.out.println("우수한 성적입니다.");
break;
case 'C':
case 'D'://case문의 값으로 문자 지정
System.out.println("분발하세요.");
break;
case 'F':
System.out.println("많은 노력이 필요합니다.");
default:
System.out.println("정확한 성적이 아닙니다.");
}
}
}
# 반복문(iteration statements)
: 반복문이란 프로그램 내에서 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 명령문이다. 프로그램이 처리하는 대부분의 코드는 반복적인 형태가 많으므로, 가장 많이 사용되는 제어문 중 하나다.
* while문
: while 문은 특정 조건을 만족할 때까지 계속해서 주어진 명령문을 반복 실행한다. while 문은 우선 조건식이 참(true)인지를 판단하여, 참이면 내부의 명령문을 실행한다. 내부의 명령문을 전부 실행하고 나면, 다시 조건식으로 돌아와 또 한 번 참인지를 판단하게 된다. 이렇게 조건식의 검사를 통해 반복해서 실행되는 반복문을 루프(loop)라고 한다.
if (조건식) {
조건식의 결과가 참일 때 실행하고자 하는 명령문;
}
⇒ 활용예시
package blog;
import java.util.Scanner;
public class Wonderful30 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner exp = new Scanner(System.in);
System.out.println("원하는 단을 입력하세요 : ");
int dan = exp.nextInt();
int x = 1;
while(x<=9) {
System.out.println(dan+"*"+x+"="+dan*x);
x++;
}
}
}
* do-while문
: while 문은 루프에 진입하기 전에 먼저 조건식부터 검사한다. 하지만 do / while 문은 먼저 루프를 한 번 실행한 후에 조건식을 검사한다. 즉, do / while 문은 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행한다.
do {
조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;
} while (조건식);
⇒ 활용예시
package blog;
import java.util.Scanner;
public class Wonderful31 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner exp = new Scanner(System.in);
int month;
do {
System.out.println("월을 입력하세요(끝내려면 0을 입력하세요.) : ");
month = exp.nextInt();
if(3<= month&&month<=5)
System.out.println("봄 입니다.");
else if(6<=month&&month<=8)
System.out.println("여름 입니다.");
else if(9<=month&&month<=11)
System.out.println("가을 입니다.");
else if(1== month || month ==2 || month==12)
System.out.println("겨울 입니다.");
else if(month !=0)
System.out.println("잘못된 입력 : 해당되는 계절이 없습니다.");
} while(month!=0);
System.out.println("감사합니다.");
}
}
* for문
: for 문은 while 문과는 달리 자체적으로 초기식, 조건식, 증감식을 모두 포함하고 있는 반복문이다. 따라서 while 문보다는 좀 더 간결하게 반복문을 표현할 수 있다.
for (초기식; 조건식; 증감식) {
조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;
}
⇒ 활용예시
package blog;
import java.util.Scanner;
public class Wonderful32 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner exp = new Scanner(System.in);
System.out.println("정수 입력 : ");
int num = exp.nextInt();
System.out.println(num+"의 약수 : ");
for(int i=1;i<=num;i++) {
if(num%i==0) {//i로 나눠서 나머지가 없으면 약수 출력.
System.out.println(i+" ");
}
}
}
}
출처 : http://tcpschool.com/java/java_control_loop
* 반복문의 비교와 중첩
⇒ 활용예시
package blog;
public class Wonderful33 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i =2;
while(i<=9) {
System.out.println("***"+i+"단"+"***");//단 제목 출력
for(int j=1;j<=9;j++) {
System.out.println(i+"*"+j+"="+i*j);
}
System.out.println();//아무것도 안쓴 게 맞음.
i++;
}
}
}
⇒ 활용예시 (while-> for 버전으로)
package blog;
public class Wonderful34 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i =2;
for(i=2;i<=9;i++) {
System.out.println("***"+i+"단"+"***");
for(int j=1;j<=9;j++) {
System.out.println(i+"*"+j+"="+i*j);
}
}
}
}
⇒ 활용예시
package blog;
import java.util.Scanner;
public class Wonderful35 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner exp = new Scanner(System.in);
System.out.println("원하는 숫자를 입력하세요 : ");
int num = exp.nextInt();
int i =1;
while(i<=num) {//입력한 만큼 돌아라
int j =1;
while(j<=i) {//돌면서 하나씩 증가.
//별표를 반복해서 같은 라인에 출력.
System.out.print("*");
j++;
}
System.out.println();//라인을 바꾼다
i++;
}
}
}
'원.더.풀 프로젝트 > JAVA' 카테고리의 다른 글
원더풀 프로젝트_java6 (0) | 2020.08.04 |
---|---|
원더풀 프로젝트_java5 (0) | 2020.07.01 |
원더풀 프로젝트_Java4 (0) | 2020.06.22 |
원더풀 프로젝트_Java2 (0) | 2020.06.01 |
원더풀 프로젝트_Java1 (0) | 2020.05.25 |
댓글