본문 바로가기
공부기록/Java

4월 10일 (1) Java - 제어문

by project100 2023. 4. 10.

file 생성

src 오른쪽 버튼 클릭 > New 


제어문

 

1. 조건(분기) 제어문 : if, switch

 

1) if

기본형 : if(조건식) {....} 조건식이 true일 때만 실행

2지 선다형 : if(조건식) {①....} else {②.....} 조건식이 true면 ①, false면 ②를 실행

다지 선다형 : if(조건식) {.....} else if(조건식2) {.....} ...... else {......}

 

2) switch

case, default문과 조합

형식 : switch(표현식) {

case : ...... 

}

표현식에 사용할 수 있는 것 : 정수, 문자(char), 문자열(String)

 

import java.util.Random;

public class DiceClass {
    public static void main(String[] args) {
        //난수 생성하는 객체 Random p115
        Random random = new Random();
        int r = random.nextInt(6) + 1; //범위지정
        // nextInt(최댓값) 범위 : 0 ~ 최댓값 -1
        // System.out.println(r);

        switch (r){
            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이 나왔습니다.");
        }
    }
}

 

2. 반복 제어문 : for(횟수 반복), while(그 외)

 

for) 기본형식 : for(초기식; 조건식; 증감식)

      forEach 형식 : for(변수 : 리스트(배열이나 구조체))

      자바스크립트의 for of와 같은 형식

 

     js에서) let arr = [10, 20, 30];

for (let v1 of arr) {console.log(v1); } // 배열의 값

출력 => 10, 20, 30 

for (let v2 in arr) {console.log(v2); } // 배열 순서주소

출력 => 0, 1, 2

 

while) 기본형식 : while(조건식) {.....}

          do while 형식 : do {......} while (조건식);

 

3. 기타 제어문 : break, continue(skip용도)

 

실습) 콘솔 프로그램의 골격

프로그램 실행 후 처음으로 타이틀 출력  

메뉴 출력

메뉴 입력

해당 메뉴 실행

메뉴 출력

메뉴 입력

해당 메뉴 실행

반복

종료 메뉴 입력

종료

 

객체 지향의 개념을 포함하여 골격을 작성 

-> 골격 객체를 만들어서 실행하는 형태

 

예) 프로그램 골격 

import java.util.Scanner;

public class ControllerClass {
    // 프로그램의 모든 부분을 처리하는 인스턴스를 설계한 클래스
    // 타이틀 : 관리프로그램
    // 메뉴 1. 입력  2. 출력  0. 종료
    public void run() {
        String menu; // 메뉴를 입력받아 저장하는 변수
        // 입력 객체 준비
        Scanner scanner = new Scanner(System.in);

        // 프로그램의 타이틀 출력
        System.out.println("관리 프로그램");
        System.out.println("=============");

        // 메뉴 출력부터 종료까지 무한 반복
        // 조건식이 true이기 때문에 종료하지 않음.
        while (true){
            // 메뉴출력
            System.out.println("1. 입력");
            System.out.println("2. 출력");
            System.out.println("0. 종료"); // 메뉴가 추가가 되어도 영향을 받지 않을 숫자로 정하기
            // 메뉴입력
            System.out.print("입력> ");//안내 문구
            menu = scanner.nextLine();//문자열로 입력
            // 메뉴 입력에 따른 기능 분기, if, switch로 처리
            // 종료처리
            // if("0".equals(menu))
            if(menu.equals("0")){
                System.out.println("프로그램 종료");
                break; // return 사용가능
            }
            // 나머지 메뉴 처리
            switch(menu){
                //입력처리 기능
                case "1":
                    System.out.println("입력을 실행합니다.");
                    break;
                //출력 처리 기능
                case "2":
                    System.out.println("출력을 실행합니다.");
                    break;
                default:
                    System.out.println("다시 입력해 주세요.");
            }
        }
    }
}

예) 프로그램 실행

// controllerclass를 시작하는 역할
public class MainClass {
    public static void main(String[] args) {
        // controllerclass의 인스턴스를 생성하여 프로그램을 실행
        ControllerClass cc = new ControllerClass();
        cc.run();
    }
}
// main 메소드가 있는 클래스로 실행할 것

 

콘솔 출력 p 67~70

1) println();  괄호 안의 내용을 출력하고 줄을 바꿈, 괄호 안이 비어있으면 줄만 바꿈

2) print(""); 괄호 안의 내용을 출력하고 줄을 바꾸지 않음, 괄호 안이 비어있을 경우 오류

3) printf("출력형식", 수식1, 수식 2,....); 출력형식에 맞게 수식 목록의 내용을 출력

 

수식 : 변수, 리터럴 등

출력형식에서 사용하는 기호 : % 

정수 : %d.

실수 : %f.

문자열 : %s.

기타 : 이스케이프 문자

public class PrintOperation {
    public static void main(String[] args) {
        int a = 10;
        float b = 3.14F;
        String s = "hello";

        //print
        System.out.print("a : " + a);
        System.out.println(); //줄 바꿈
        System.out.print("b : " + b);
        System.out.println();
        System.out.print("s : " + s);
        System.out.println();

        //printf
        System.out.println(a + " " + b + " " + s);
        System.out.printf("변수들의 값은 %d, %f, %s 입니다.\n", a,b,s);

        System.out.printf("     a : %010ddn\n", a); 
        //10은 자릿수  +왼쪽, - 오른쪽 방향을 설정, d를 하나 더 쓰면 문자로 인식, 앞에 0을 쓰면 0으로 채워짐 

        for(int i = 1; i < 10; i++){
            System.out.printf("2 * %d = %02d\n", i, (i*2));
        } // 앞에 숫자 0을 출력해줌 02, 04

        System.out.printf("%7.2f\n", b); // 4.2까지 포함하여 7칸
    }
}