JAVA
chapter04 : control_statement
GAWON
2023. 5. 16. 17:37
1.1 코드 실행 흐름 제어
- 자바 프로그램을 개발자가 원하는 방향으로 바꿀 수 있도록 해주는 것이 제어문이다.
- 제어문은 조건식과 중괄호{} 블록으로 구성되는데, 연산 결과에 따라 블록 내부의 실행 여부가 결정된다.
- 제어문의 종류는 조건문과 반복문이 있는데, 조건문에는 if, switch문이 있고
반복문에는 for, while, do-while문이 있다.
- 제어문 블록 내부에는 또 다른 제어문을 사용할 수 있다.
if문 내부에 for문을 가질 수 있고, while문도 가질 수 있다. 그렇기 때문에 개발자가 원하는
매우 복잡한 흐름 제어도 가능하다.
Test01.java
Q. 정수를 입력 받아 "짝수", "홀수" 구분해서 출력하기
3의 배수는 "3의 배수"로 출력하기
package org.joonzis.test;
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
// Test01.java
// Q. 정수를 입력 받아 "짝수", "홀수" 구분해서 출력하기
// 3의 배수는 "3의 배수"로 출력하기
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력 >> ");
int num = sc.nextInt();
// 1. 방법 1 - 그룹
if(num % 3 == 0) {
System.out.println("3의 배수");
}else if(num % 2 == 0) {
System.out.println("짝수");
}else {
System.out.println("홀수");
}
// 2. 방법 2 - 짝 or 홀 + 3의 배수
if(num % 2 == 0) {
System.out.println("짝수");
}else {
System.out.println("홀수");
}
if(num % 3 == 0) {
System.out.println("3의 배수");
}
sc.close();
}
}
Test02.java
Q. 필기와 실기 점수를 입력 받아 합격 유무 출력하기
합격기준: 필기와 실기 점수 모두 70점 이상이거나, 평균이 80 이상시 "합격" 아니면 "불합격"
package org.joonzis.test;
import java.util.Scanner;
public class Test02 {
public static void main(String[] args) {
// Test02.java
// Q. 필기와 실기 점수를 입력 받아 합격 유무 출력하기
// 합격기준: 필기와 실기 점수 모두 70점 이상이거나, 평균이 80 이상시 "합격" 아니면 "불합격"
Scanner sc = new Scanner(System.in);
System.out.print("필기 점수 >> ");
int num1 = sc.nextInt();
System.out.print("실기 점수 >> ");
int num2 = sc.nextInt();
double avg = (double)(num1+num2) / 2.0;
// 1. 논리식 사용 x
if(avg >= 80) {
System.out.println("합격");
}else if(num1 >= 70) { // 필기 70 이상
if(num2 >= 70) { // 실기 70 이상
System.out.println("합격");
}
}else {
System.out.println("불합격");
}
// 2. 논리식 사용
if( (num1 >=70 && num2 >=70) || avg >=80 ) {
System.out.println("합격");
}else {
System.out.println("불합격");
}
sc.close();
}
}
Test03.java
Q. 나이를 입력 받아 7 이하면 "미취학", 13 이하이면 "초등학생", 16 이하이면 "중학생", 19 이하이면 "고등학생", 나머지는 "성인"
package org.joonzis.test;
import java.util.Scanner;
public class Test03 {
public static void main(String[] args) {
// Test03.java
// Q. 나이를 입력 받아 7 이하면 "미취학", 13 이하이면 "초등학생",
// 16 이하이면 "중학생", 19 이하이면 "고등학생", 나머지는 "성인"
Scanner sc = new Scanner(System.in);
System.out.print("나이 입력 >> ");
int age = sc.nextInt();
if(age <= 7) {
System.out.println("미취학");
}else if(age <= 13) {
System.out.println("초등학생");
}else if(age <= 16) {
System.out.println("중학생");
}else if(age <= 19) {
System.out.println("고등학생");
}else {
System.out.println("성인");
}
sc.close();
}
}
Test05.java
Q. 문자를 하나 입력 받아 "대문자", "소문자", "아라비아 숫자", "일반 문자" 구분해서 출력하기
아스키 코드표 참고
package org.joonzis.test;
import java.util.Scanner;
public class Test05 {
public static void main(String[] args) {
// Test05.java
// Q. 문자를 하나 입력 받아 "대문자", "소문자", "아라비아 숫자", "일반 문자" 구분해서 출력하기
// 아스키 코드표 참고
Scanner sc = new Scanner(System.in);
System.out.print("문자 입력 >> ");
char ch = sc.next().charAt(0);
if(ch >= 'A' && ch <= 'Z') {
System.out.println("대문자");
}else if(ch >= 'a' && ch <= 'z') {
System.out.println("소문자");
}else if(ch >= '0' && ch <= '9') {
System.out.println("아라비아 숫자");
}else {
System.out.println("일반 문자");
}
sc.close();
}
}
Test06.java
Q. 알파벳을 하나 입력 받아 대문자가 입력되면 소문자로 변환해서 출력하고, 소문자가 입력되면 대문자로 변환해서 출력하고
나머지 문자들은 그대로 출력하기
★아스키 코드 97~122 : 소문자, 65~90 : 대문자, 48~57 : 숫자
package org.joonzis.test;
import java.util.Scanner;
public class Test06 {
public static void main(String[] args) {
// Test06.java
// Q. 알파벳을 하나 입력 받아 대문자가 입력되면 소문자로 변환해서 출력하고, 소문자가 입력되면 대문자로 변환해서 출력하고
// 나머지 문자들은 그대로 출력하기
// ★아스키 코드
// 97~122 : 소문자,
// 65~90 : 대문자,
// 48~57 : 숫자
Scanner sc = new Scanner(System.in);
System.out.print("문자 입력 >> ");
char ch = sc.next().charAt(0);
if(ch >= 'A' && ch <= 'Z') {
System.out.println(ch+=32);
}else if(ch >= 'a' && ch <= 'z') {
System.out.println(ch-=32);
}else {
System.out.println(ch);
}
sc.close();
}
}
Test08.java (switch문)
Q. 권한을 출력하기
3 수준 : 실행, 쓰기, 읽기 / 2수준 : 쓰기, 읽기 / 1수준 : 읽기
실행 예)
수준입력 >> 3
출력 : 실행, 쓰기, 읽기
package org.joonzis.test;
import java.util.Scanner;
public class Test08 {
public static void main(String[] args) {
// Test08.java (switch문)
// Q. 권한을 출력하기
// 3 수준 : 실행, 쓰기, 읽기 / 2수준 : 쓰기, 읽기 / 1수준 : 읽기
// 실행 예)
// 수준입력 >> 3
// 출력 : 실행, 쓰기, 읽기
Scanner sc = new Scanner(System.in);
System.out.print("수준 입력 >>");
int num = sc.nextInt();
// switch (num) {
// case 1: System.out.println("읽기");
// break;
// case 2: System.out.println("쓰기, 읽기");
// break;
// case 3: System.out.println("실행, 쓰기, 읽기");
// break;
// }
switch (num) {
case 3: System.out.print("실행, ");
case 2: System.out.print("쓰기, ");
case 1: System.out.println("읽기");
break;
}
sc.close();
}
}
Test09.java (switch문)
Q. 월을 입력 받아 일을 출력하기
실행 예)
월 입력 >> 10
출력 : 10월은 31일 까지 있습니다.
package org.joonzis.test;
import java.util.Scanner;
public class Test09 {
public static void main(String[] args) {
// Test09.java (switch문)
// Q. 월을 입력 받아 일을 출력하기
// 실행 예)
// 월 입력 >> 10
// 출력 : 10월은 31일 까지 있습니다.
Scanner sc = new Scanner(System.in);
System.out.print("수준 입력 >>");
int mon = sc.nextInt();
switch (mon) {
case 2: System.out.println(mon + "월은 28일 까지 있습니다.");
break;
case 4:
case 6:
case 9:
case 11:System.out.println(mon + "월은 30일 까지 있습니다.");
break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:System.out.println(mon + "월은 31일 까지 있습니다.");
break;
}
}
}