제어문 (조건문, 반복문, 분기문)
조건문
if
- 단독 if문
- 조건식의 결과 값이 참(true)이면 { }안에 있는 코드를 실행하고,
조건식의 결과 값이 거짓(false)이면 { } 안에 있는 코드를 무시하고 넘어감
// [표현식]
// if (조건식) {
// 조건식이 true일 때 실행할 코드 작성
// }
Scanner sc = new Scanner(System.in);
System.out.print("숫자를 한 개 입력하세요 : ");
int num = sc.nextInt();
//짝수인지 조건을 확인함
if(num % 2 == 0) {
//결과가 참일 때 수행함
System.out.println("입력하신 숫자는 짝수입니다.");
}
//짝수가 아닌지 조건을 확인함 (즉, 홀수인지 확인)
if(num % 2 != 0) {
//결과가 참일 때 수행함
System.out.println("입력하신 숫자는 홀수입니다.");
}
//조건과 상관없이 실행됨
System.out.println("프로그램 종료");
}
}
if - else
- 둘 중 한 개를 선택하는 조건문으로, 조건이 참인 경우와 거짓인 경우
- 수행하는 명령을 따로 작성하는 경우에 사용 한다.
- 조건을 비교하여 두 개의 명령 중 한 개는 무조건 수행을 한다.
// [표현식]
// if (조건식) {
// 조건이 참일 경우 실행할 내용 작성
// } else { //문법에러조심
// 조건이 거짓일 경우 실행할 내용 작성
// }
// else에는 조건식을 사용하지 못함
// if의 조건식이 거짓이면 무조건 else 블럭의 실행 코드를 수행함
// 숫자를 하나 입력받아 홀수 짝수 구분하여 출력
Scanner sc = new Scanner(System.in);
System.out.print("정수를 하나 입력하세요 : ");
int num = sc.nextInt();
String str = ""; //리터럴 타입으로 초기화
if(num % 2 == 0) {
str = "입력하신 정수는 짝수입니다.";
}else {
str = "입력하신 정수는 홀수입니다.";
}
System.out.println(str);
//숫자를 하나 입력 받아 양수인지 음수인지 풀력
//단, 0이면 "0입니다"라고 출력하세요
System.out.print("정수를 하나 입력하세요 : ");
int num = sc.nextInt();
String str = "";
if(num != 0) {
if(num > 0) {
str = "입력하신 숫자는 양수입니다.";
}else {
str = "입력하신 숫자는 음수입니다.";
}
}else {
str = "입력하신 숫자는 0입니다";
}
System.out.println(str);
//정수 두 개를 입력 받아, 두 수의 산술연산을 처리해서 출력하세요
//단, 두 수 모두 1부터 100 사이의 값이어야 함
//둘 중 하나라도 범위에 속하지 않으면
//"값은 1부터 100사이어야 합니다." 출력되게 함
System.out.print("첫 번째 정수를 입력 : ");
int num1 = sc.nextInt();
System.out.print("두 번째 정수를 입력 : ");
int num2 = sc.nextInt();
int plus, minus, multi, div, mod;
if((num1 >= 1 && num1 <= 100) && (num2 >= 1 && num2 <= 100)) {
plus = num1 + num2;
minus = num1 - num2;
multi = num1 * num2;
div = num1 / num2;
mod = num1 % num2;
System.out.println(num1 + " + " + num2 + " = " + plus);
System.out.println(num1 + " - " + num2 + " = " + minus);
System.out.println(num1 + " * " + num2 + " = " + multi);
System.out.println(num1 + " / " + num2 + " = " + div);
System.out.println(num1 + " % " + num2 + " = " + mod);
}else {
System.out.println("두 수 모두 1부터 100 사이의 값이어야 합니다");
}
if - else if
- if else if 구문은 다중 조건을 줄 수 있는 문법이다.
// [표현식]
// if (조건식) {
// 첫 번째 조건식이 참 인 경우 동작할 내용
// } else if (조건식) {
// 두 번쨰 조건식이 참 인 경우 동작할 내용
// } else {
// 모든 조건이 거짓인 경우 동작할 내욜
// }
//정수를 하나 입력 받아 등급을 나누어 점수와 등급을 출력하세요
//등급은, 90점 이상은 A등급
//90점 미만 80점 이상은 B등급
//80점 미만 70점 이상은 C등급
//70점 미만 60점 이상은 D등급
//60점 미만은 F등급으로 나눈다.
//등급에 "+"라는 문자를 추가하여 출력하세요
//예) 95점 이상은 등급이 A+로 출력되게 함
Scanner sc = new Scanner(System.in);
System.out.print("점수를 입력하세요 : ");
int point = sc.nextInt();
char grade = ' '; //char는 공백으로 초기화
if(point >= 90) {
grade = 'A';
if(point >= 95) {
grade += "+";
}
}else if(/*point < 90 &&*/ point >= 80) {
grade = 'B';
if(point >= 85) {
grade += "+";
}
}else if(/*point < 80 &&*/ point >= 70) {
grade = 'C';
if(point >= 75) {
grade += "+";
}
}else if(/*point < 70 &&*/ point >= 60) {
grade = 'D';
if(point >= 65) {
grade += "+";
}
}else {
grade = 'F';
}
System.out.printf("당신의 점수는 %d점이고, 등급은 %c입니다.\n", point, grade); //포맷형태 %d
- 포맷문자
- %d : 정수형 *
- %f : 실수(소수점 아래 6자리) *
- %c : 문자 *
- %s : 문자열 *
- %b : 논리형 *
- %.2f : 소수점 아래 2자리 까지만 표시 *
- 특수문자(escape 문자)
- tap : \t 정해진 공간만큼 띄어쓰기
- new line : \n 출력하고 다음 라인으로 옮김 *
- 역슬래쉬 : \\ 특수문자(\) 사용 *
- 작은따옴표 : \' 특수문자(') 사용 *
- 큰따옴표 : \" 특수문자(") 사용 *
- 유니코드 : \u0001 유니코드 표시할 때 사용
switch
- 변수의 값을 case에서 찾아 명령을 수행하는 조건문이다.
- 해당하는 값이 없을 경우에는 default의 명령문을 수행한다.
- case와 명령문 사이에는 콜론(:)을 써야한다.
- break가 없으면 멈추지 않고 계속 수행한다.
// [표현법]
// switch (변수) { //정수, 실수, 문자, 문자열
// case 1: 실행문1; break; //변수 값이 1일 경우 실행
// case 2: 실행문2; break; //변수 값이 2일 경우 실행
// case 3: 실행문3; return; //변수 값이 case문에 없을 경우 실행 return : 속해 있는 method()를 빠져나감
// }
//정수 두 개와 연산기호 1개를 입력받아서
//연산기호 문자에 해당하는 계산을 수행하고 출력하세요
Scanner sc = new Scanner(System.in);
System.out.print("첫 번째 값 : ");
int first = sc.nextInt();
System.out.print("두 번째 값 : ");
int second = sc.nextInt();
System.out.print("연산자(+,-,*,/) : ");
char op = sc.next().charAt(0);
int result = 0;
switch(op) {
case '+': result = first + second; break;
case '-': result = first - second; break;
case '*': result = first * second; break;
case '/': result = first / second; break;
}
System.out.println(first + " " + op + " " + second + " = " + result);
//1월~ 12월까지를 정수로 입력받아
//해당하는 달이 몇일 까지인지 출력하세요
Scanner sc = new Scanner(System.in);
System.out.print("1월 ~ 12월 까지 중 하나를 입력하세요 : ");
int num = sc.nextInt();
switch(num) {
case 1 : case 3 : case 5 : case 7 : case 8 : case 10 :
case 12 : System.out.println("입력하신 월은 31일 까지입니다."); break;
case 4 : case 6 : case 9 : case 11 : System.out.println("입력하신 월은 30일 까지입니다."); break;
case 2: System.out.println("입력하신 월은 28일 혹은 29일 까지입니다."); break;
default : System.out.println("반드시 1월 ~ 12월 까지를 입력해야 합니다."); return;
}
'JAVA > 이론 정리 및 예제' 카테고리의 다른 글
[JAVA/자바] #3_3 분기문 / 예제 (0) | 2021.09.05 |
---|---|
[JAVA/자바] #3_2 반복문 / 예제 (0) | 2021.09.05 |
[JAVA/자바] #3_0 제어문 / beforeTest (0) | 2021.09.05 |
[JAVA/자바] #2_2 연산자 실습 문제 (0) | 2021.09.03 |
[JAVA/자바] #2_1 연산자 / 예제 (0) | 2021.09.03 |