03_제어문

package edu.kh.control.condition;
import java.util.Scanner;
public class SwitchExample { // 코드 예제용 클래스
/* switch문
* - 식 하나의 결과로 많은 경우의 수를 처리할 때 사용하는 조건문
* -> 식의 결과로 얻은 값과 같은 case 구문이 수행된다.
*
* [작성법]
* switch(식) {
*
* case 결과값1 : 수행코드1; break;
* case 결과값2 : 수행코드2; break;
* case 결과값3 : 수행코드3; break;
* ...
* default : case를 모두 만족하지 않을 경우 수행하는 코드;
*
* }
*
*/
/*public void ex1() {
Scanner sc = new Scanner(System.in);
int month = sc.nextInt();
switch(month) {
case 3: "봄"; break;
case 6: "여름"; break;
case 9: "가을"; break;
case 12: "겨울"; break;
default : "해당하는 달이 없습니다";
}
}*/
Scanner sc = new Scanner(System.in);
public void ex1() {
// 키보드로 정수를 입력받아
// 1 이면 "빨강색"
// 2 이면 "주황색"
// 3 이면 "노란색"
// 4 이면 "초록색"
// 1~4 사이 숫자가 아니면 "흰색" 출력
System.out.print("정수 입력 : ");
int input = sc.nextInt();
String result; // 결과값 저장할 변수
switch(input) {
case 1 : result = "빨강색"; break;
case 2 : result = "주황색"; break;
case 3 : result = "노란색"; break;
case 4 : result = "초록색"; break;
default : result = "흰색"; break;
}
System.out.println(result);
}
public void ex2() {
System.out.print("달(월) 입력 : ");
int month = sc.nextInt();
String result; // 결과 저장 변수 선언
switch(month) {
// switch문은 들여쓰기 안하는게 관례
// case는 if문처럼 범위로 할 수 없음
case 3 : case 4 : case 5 : result = "봄"; break;
case 6 : case 7 : case 8 : result = "여름"; break;
case 9 : case 10 : case 11 : result = "가을"; break;
case 12 : case 1 : case 2 : result = "겨울"; break;
default : result = "잘못입력";
}
System.out.println(result);
}
}
문제 안내
패키지 : edu.kh.control.practice
실행 클래스 : Run1
기능 작성 클래스 : ConditionPractice
package edu.kh.control.practice;
public class Run1 {
public static void main(String[] args) {
ConditionPractice cp = new ConditionPractice();
//cp.practice1();
//cp.practice2();
//cp.practice3();
//cp.practice4();
cp.practice5();
}
}
package edu.kh.control.practice;
import java.util.Scanner;
public class ConditionPractice {
Scanner sc = new Scanner(System.in);
public void practice1() {
System.out.print("숫자를 한 개 입력하세요 : ");
int input = sc.nextInt();
String result;
if(input >= 0) {
if(input % 2 == 0) {
result = "짝수입니다.";
} else {
result = "홀수입니다.";
}
} else {
result = "양수만 입력해주세요.";
}
System.out.println(result);
}
package edu.kh.control.practice;
import java.util.Scanner;
public class ConditionPractice {
Scanner sc = new Scanner(System.in);
public void practice2() {
System.out.print("국어점수 : ");
int kor = sc.nextInt();
System.out.print("수학점수 : ");
int math = sc.nextInt();
System.out.print("영어점수 : ");
int eng = sc.nextInt();
int sum = kor + math + eng;
double avg = sum / 3.0;
boolean result = (kor >= 40) && (math >= 40) && (eng >= 40) && (avg >= 60);
if(result == true) {
System.out.printf("국어 : %d\n수학 : %d\n영어 : %d\n합계 : %d\n평균 : %.1f\n", kor, math, eng, sum, avg);
}
System.out.println(result ? "축하합니다, 합격입니다!" : "불합격입니다.");
}
package edu.kh.control.practice;
import java.util.Scanner;
public class ConditionPractice {
Scanner sc = new Scanner(System.in);
public void practice3() {
/*System.out.print("1~12 사이의 정수 입력 : ");
int input = sc.nextInt();
String result = "";
if(input < 1 || input > 12) {
result = input + "월은 잘못 입력된 달입니다.";
System.out.println(result);
}
switch(input) {
case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : result = input + "월은 31일까지 있습니다.";
System.out.println(result); break;
case 2 : case 4 : case 6 : case 9 : case 11 : result = input + "월은 30일까지 있습니다.";
System.out.println(result);
}*/
System.out.println("1~12 사이 정수 입력: ");
int month = sc.nextInt();
switch(month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
System.out.println(month + "월은 31일까지 있습니다");
break;
case 4: case 6: case 9: case 11:
System.out.println(month + "월은 30일까지 있습니다");
break;
case 2:
System.out.println(month + "월은 28일까지 있습니다");
break;
default : System.out.println(month + "월은 잘못 입력된 달입니다.");
}
}
package edu.kh.control.practice;
import java.util.Scanner;
public class ConditionPractice {
Scanner sc = new Scanner(System.in);
public void practice4() {
/*System.out.print("키(m)를 입력해 주세요 : ");
double height = sc.nextDouble();
System.out.print("몸무게(kg)를 입력해 주세요 : ");
double weight = sc.nextDouble();
double bmi = weight / (height * height);
System.out.println("BMI 지수 : " + bmi);
String result;
if(bmi < 18.5) {
result = "저체중";
} else if(bmi >= 18.5 && bmi < 23) {
result = "정상체중";
} else if(bmi >= 23 && bmi < 25) {
result = "과체중";
} else if(bmi >= 25 && bmi < 30) {
result = "비만";
} else {
result = "고도 비만";
}
System.out.println(result);*/
System.out.print("키(m)를 입력해 주세요 : ");
double height = sc.nextDouble();
System.out.print("몸무게(kg)를 입력해 주세요 : ");
double weight = sc.nextDouble();
//BMI = 몸무게 / (키(m) * 키(m))
double bmi = weight / (height * height);
System.out.println("BMI 지수 : " + bmi);
String result;
if(bmi < 18.5) {
result = "저체중";
} else if(bmi < 23) {
result = "정상체중";
} else if(bmi < 25) {
result = "과체중";
} else if(bmi < 30) {
result = "비만";
} else {
result = "고도비만";
}
System.out.println(result);
}
*어려움 다시보기!
package edu.kh.control.practice;
import java.util.Scanner;
public class ConditionPractice {
Scanner sc = new Scanner(System.in);
public void practice5() {
System.out.print("중간 고사 점수 : ");
double midTerm = sc.nextInt();
System.out.print("기말 고사 점수 : ");
double finalTerm = sc.nextInt();
System.out.print("과제 점수 : ");
double report = sc.nextInt();
System.out.print("출석 횟수 : ");
double attendance = sc.nextInt();
// 각각의 점수를 비율에 맞게 변경
midTerm *= 0.2; // midTerm = midTerm * 0.2;
finalTerm *= 0.3;
report *= 0.3;
//attendance *= 1;
System.out.println("============결과==============");
if(attendance <= 20 * (1 - 0.3)) { // 14번 이하 출석했을 경우
System.out.println("Fail [출석 횟수 부족] (" + (int)attendance + "/20)");
} else { // 출석 만족 시
System.out.printf("중간 고사 점수(20) : %.1f \n", midTerm);
System.out.printf("기말 고사 점수(30) : %.1f \n", finalTerm);
System.out.printf("과제 점수(30) : %.1f \n", report);
System.out.printf("출석 점수(20) : %.1f \n", attendance);
double sum = midTerm + finalTerm + report + attendance;
// 변수명 어느정도 치고 ctrl + space 변수명 나옴
System.out.printf("총점 : %.1f \n", sum);
if( sum >= 70) {
System.out.println("PASS");
} else {
System.out.println("Fail [점수 미달]");
}
}
프로그램 수행 흐름을 바꾸는 역할을 하는 제어문 중 하나로 특정 문장들을 반복해서 수행하도록 함

package edu.kh.control.loop;
import java.util.Scanner;
public class ForExample {
/* for문
* - 끝이 정해져 있는(횟수가 지정되어 있는) 반복문
*
* [작성법]
*
* for(초기식; 조건식; 증감식) {
* 반복 수행할 코드
* }
*
* - 초기식 : for문을 제어하는 용도의 변수 선언
*
* - 조건식 : for문의 반복 여부를 지정하는 식.
* 보통 초기식에 사용된 변수를 이용하여 조건식을 작성함.
*
* - 증감식 : 초기식에 사용된 변수를
* for문이 끝날 때 마다 증가 또는 감소시켜
* 조건식의 결과를 변하게 하는 식
*/
public void ex1() {
// for 문 기초 사용법1
// 1~10 출력하기
// 1부터 10까지 1씩 증가하며 출력
// * 반복문은 조건식이 true 일 때만 반복한다
for(int i = 1; i <= 10; i++) {
// 초기식 // 조건식 //증감식
// 반복 수행할 코드
System.out.println(i);
}
}
public void ex2() {
// 3에서 7까지 1씩 증가하며 출력
// 3 4 5 6 7
for(int i = 3; i <= 7; i++) {
System.out.println(i);
}
}
public void ex3() {
// 2부터 15 까지 1씩 증가하며 출력
// 2 3 4 5 ... 14 15
for(int i= 2; i <= 15; i++) {
System.out.println(i);
}
}
public void ex4() {
// 1부터 입력받은 수까지 1씩 증가하며 출력
Scanner sc = new Scanner(System.in);
System.out.print("입력 번호 : ");
int input = sc.nextInt();
for(int i = 1; i <= input; i++) {
System.out.println(i);
}
}
public void ex5() {
// 1부터 입력받은 수까지 2씩 증가하며 출력
Scanner sc = new Scanner(System.in);
System.out.print("입력 번호 : ");
int input = sc.nextInt();
for(int i = 1; i <= input; i += 2) { //i=i+2
System.out.println(i);
}
}
public void ex6() {
// 1.0부터 입력 받은 실수 까지 0.5씩 증가하며 출력
Scanner sc = new Scanner(System.in);
System.out.print("입력 번호 : ");
double input = sc.nextDouble();
for(double i = 1.0; i <= input; i += 0.5) {
System.out.println(i);
}
}
public void ex7() {
// 영어 알파벳 A 부터 Z 까지 한줄로 출력
// ABCDEF...Z
// * char 자료형은 문자형이지만 실제로 정수(문자표 번호)를 저장한다
for(int i = 'A'; i <= 'Z'; i++) {
System.out.print( (char)i ); // 강제형변환, ABCDEFGHIJKLMNOPQRSTUVWXYZ
}
System.out.println("\n-------------------------------------");
for(char i = 'A'; i <= 'Z'; i++) {
System.out.print(i); // ABCDEFGHIJKLMNOPQRSTUVWXYZ
}
}
public void ex8() {
// 10에서 1까지 1씩 감소하며 출력
for(int i = 10; i >= 1; i--) {
System.out.println(i);
}
}
public void ex9() {
// for문 응용 1 : 반복문을 이용한 값의 누적
// 1부터 10까지 모든 정수의 합 구하기
int sum = 0; // 반복되어 증가되는 i값의 합계를 저장할 변수
// 0으로 시작하는 이유 : 아무것도 더하지 않음으로
// 정확히 결과를 도출할 수 있기 때문
for(int i = 1; i <= 10; i++) {
// sum = sum + i;
sum += i;
// 0 = 0 + 1
// 1 = 1 + 1...
}
System.out.println("합계 : " + sum); // 합계 : 55
}
public void ex10() {
// for문 응용 2 : 정수 5개를 입력 받아서 합계 구하기
// ex)
// 입력 1 : 10
// 입력 2 : 20
// 입력 3 : 30
// 입력 4 : 40
// 입력 5 : 50
// 합계 : 150
/*Scanner sc = new Scanner(System.in);
System.out.print("입력 1 : ");
int input1 = sc.nextInt();
System.out.print("입력 2 : ");
int input2 = sc.nextInt();
System.out.print("입력 3 : ");
int input3 = sc.nextInt();
System.out.print("입력 4 : ");
int input4 = sc.nextInt();
System.out.print("입력 5 : ");
int input5 = sc.nextInt();
int result = input1 + input2 + input3 + input4 + input5;
System.out.printf("합계 : %d\n", result);*/
Scanner sc = new Scanner(System.in);
int sum = 0;
for(int i = 1; i <= 5; i++) {
System.out.print("입력" + i + " : ");
int input = sc.nextInt();
sum+= input; // sum에 입력받은 input값 누적
}
System.out.println("합계 : " + sum);
}
public void ex11() {
// 정수를 몇 번 입력 받을지 먼저 입력 받고
// 입력된 정수의 합계를 출력
// ex)
// 입력 받을 정수의 개수 : 3
// 입력 1 : 10
// 입력 2 : 20
// 입력 3 : 30
// 합계 : 60
// ex)
// 입력 받을 정수의 개수 : 2
// 입력 1 : 10
// 입력 2 : 20
// 합계 : 30
Scanner sc = new Scanner(System.in);
System.out.print("입력 받을 정수의 개수 : ");
int num = sc.nextInt();
int sum = 0;
for(int i = 1; i <= num; i++) {
System.out.print("입력" + i + " : ");
int input = sc.nextInt();
sum += input;
}
System.out.println("합계 : " + sum);
}
public void ex12() {
// 1부터 20까지 1씩 증가하면서 출력
// 단, 5의 배수 () 를 붙여서 출력
// ex) 1 2 3 4 (5) 6 7 8 9 (10) 11 ... (20)
for(int i = 1; i <= 20; i++) {
if (i % 5 == 0) {
System.out.print("(" + i + ") ");
} else {
System.out.print(i + " "); // 1 2 3 4 (5) 6 7 8 9 (10) 11 12 13 14 (15) 16 17 18 19 (20)
}
}
}
public void ex13() {
// 1부터 20까지 1씩 증가하면서 출력
// 단, 입력 받은 수의 배수는 () 표시
// ex)
// 괄호를 표시할 배수 : 3
// 1 2 (3) 4 5 (6) ...
// 괄호를 표시할 배수 : 4
// 1 2 3 (4) 5 6 7 (8) 9 ...
Scanner sc = new Scanner(System.in);
System.out.print("괄호를 표시할 배수 : ");
int num = sc.nextInt();
for(int i = 1; i <= 20; i++) {
if (i % num == 0) {
System.out.print("(" + i + ") ");
} else {
System.out.print(i + " ");
}
}
}
public void ex14() {
// [구구단 출력]
// 2 ~ 9 사이 수를 하나 입력받아
// 해당 단을 출력
// 단, 입력받은 수가 2~9 사이 숫자가 아니면 "잘못 입력 하셨습니다" 출력
Scanner sc = new Scanner(System.in);
System.out.print("단 입력 : ");
int dan = sc.nextInt();
if(dan >= 2 && dan <= 9) { // dan이 2~9 사이
for(int i = 1; i <= 9; i++) {
System.out.printf("%d X %d = %d\n", dan, i, dan * i);
}
} else {
System.out.println("잘못 입력 하셨습니다.");
}
}
public void ex15() {
// [19단 출력기]
// 2 ~ 19단 사이 단을 입력 받아서 x 1 ~ x 19까지 출력
// 단, 2 ~ 19 사이 단이 입력되지 않으면 "잘못 입력 하셨습니다." 출력
Scanner sc = new Scanner(System.in);
System.out.print("단 입력 : ");
int dan = sc.nextInt();
if(dan >=2 && dan <= 19) {
for (int i = 1; i <= 19; i++) {
System.out.printf("%d X %d = %d\n", dan, i, dan * i);
}
} else {
System.out.println("잘못 입력 하셨습니다.");
}
}
}
package edu.kh.control.loop;
public class LoopRun {
public static void main(String[] args) {
ForExample forEx = new ForExample();
//forEx.ex1();
//forEx.ex2();
//forEx.ex3();
//forEx.ex4();
//forEx.ex5();
//forEx.ex6();
//forEx.ex7();
//forEx.ex8();
//forEx.ex9();
//forEx.ex10();
//forEx.ex11();
//forEx.ex12();
//forEx.ex13();
//forEx.ex14();
//forEx.ex15();
}
}