第三章.条件分岐と繰返し


A.プログラムフロー
▶実行コードの順序=「制御構造」
▶代表的なのは「順番」(2章まで)、「分割」、「繰り返し」.
ブランチクリア

1.ifコマンドを使用して「ブランチ」を行います.
2.ifの後()に「分割条件」と書きます.
3.変数がtrueであるかfalseであるかを確認するときに"="記号を使用します.
4.分岐条件が成立した場合(変数=true)、{}内でコードを実行し、成立しない場合(変数=false)、{}内でコードを実行する.
5.if文には、「if独自の構文」、「if-else構文」、「if-els-if-else構文」の3種類があります.
<スイッチドア>
1.スイッチドアのブロックはスイッチドアから外すことができる
2.ifゲートを使用している場合、switchゲートに変更したい場合は、alt+enterをswitchゲートに変更する項目を選択します.
package com.company;

public class note {
    public static void main(String[] args) {
        boolean Clear = true;
        if (Clear == true) {
            System.out.println("세탁을 합니다");
            System.out.println("산책을 합니다");
        } else {
            System.out.println("영화를 봅니다");
        }
    }
 }
▶Javaでif文を素早く使うショートカットキーはfori+enter.
▶二重for文を使用する場合は、fori+enter+{}にfori+enterを入力し、変数をi、jとして自動的に指定します.
重複文の消去(while文)
  • whileを使用して、「繰返し」制御を行います.
  • whileの後ろに、()に「繰り返しの条件」と書きます.
  • 反復条件が成立すると、ブロック内のコードは無限に反復される.
  • public class note {
        public static void main(String[] args) {
            boolean isDoorClose = true;
            while (isDoorClose == true) {
                System.out.println("노크한다");
                System.out.println("1분 기다린다");
            }
        }
    }
    ▶Javaでは文字列の比較に「==」は使用できません.
    ▶「==」オブジェクトが同じ文字列を持つことを保証しないため、オブジェクトが同じかどうかをチェックします.(下記のコードで比較して詳しく説明します)
    ▶javaでは、equals()で文字列を比較します.
    public class compare {
        public static void main(String[] args) {
            String s1 = "abcd";
            String s2 = new String("abcd");
    		
            if(s1 == s2) {
                System.out.println("두개의 값이 같습니다.");
            }else {
                System.out.println("두개의 값이 같지 않습니다.");
            }
        }
    }

    ▶ここで2つの値が等しくないのは、javaの"=="演算子の場合、参照タイプ変数間の演算が同じオブジェクトを参照するかどうか、および他のオブジェクトを参照するかどうかを決定するために使用されるためです.これは最終的にアドレス値の比較となり,上のコードから異なる結論が得られた.したがってjavaはequals()を使用して文字列を比較します.
    public class compare {
        public static void main(String[] args) {
            String s1 = "abcd";
            String s2 = new String("abcd");
    		
            if(s1.equals(s2)) {
                System.out.println("두개의 값이 같습니다.");
            }else {
                System.out.println("두개의 값이 같지 않습니다.");
            }
        }
    }


    ▶javaでは、live templateでショートカットキーを作成して使用できます.

    <メソッド>

  • 左上隅でFile-setting-live templatesに入ります.(ctrl+alt+sショートカットキーを使用して設定できます.)

  • (+)[表示]をクリックし、[Live Template]をクリック

  • 必要なショートカットキーの設定

  • ショートカットキーの説明の作成

  • テンプレートはショートカットキー作成コード(new java.util.Scanner(System.in)です.nextLine();)

  • 元々はdefineだったのですが、設定すると上の写真と同じように変わります.ショートカットキーを使う場所をクリックして選べばいいのでjavaだけを選びました.

  • OKをクリックして終了

  • sc+enterを検索すると、新しいスキャンプログラム(System.in)が自動的に見つかります.nextLine(); 完了した問題を確認できます!
  • Question)新しいjavaのscショートカットキーを使用します.util.Scanner(System.in).nextLine();ショートカットキーを入力する理由を設定し、new Scanner(System.in)を入力します.nextLine(); 入力できますか?
    Answer)上記のショートカットキーが設定されていると自動的にパッケージがインポートされるので省略します.
    重要なのは、自動インポート機能は可能な場合にのみ実行され、同じクラスが複数ある場合、自動インポートは機能しません.
    例題
    例3-1)
    다음 문장을 Java 조건식으로 기술하시오
    1. 변수 weight 의 값이 60과 같다
    2. 변수 age1 과 age2 의 합계를 2배 한 것이 60을 넘는다
    3. 변수 age 가 홀수다
    4. 변수 name 에 저장된 문자열이 “스마트"와 같다
    
    package com.company.quiz;
    
    public class Quiz_3_1 {
        public static void main(String[] args) {
    //        int weight = 60;
    //        if(weight == 60){
    
    //        int age1 = 40, age2 = 30;
    //        if((age1+age2)*2>60){
    
    //        int age = 15;
    //        if((age % 2) == 1){
    
    //       String name = "스마트";
    //       if(name.equals("스마트")){
            System.out.println("끝!");
        }
    }
    
    例3-2)
    /*다음 중 조건식(if문의)으로 사용 할 수 있는 것을 고르시오
            1. cost = 300 * 1.05
            2. 3
            3. age != 30
            4. true
            5. b + 5 < 20
            6. gender = true
     */
    
    package com.company.quiz;
    
    public class Quiz_3_2 {
        public static void main(String[] args) {
            int cost = 1000, age = 30, b = 10;
            boolean gender = true;
            //1. if(cost = 300 * 1.05) x
            //2. if(3) x
            //3. if(age != 30) o
            //4. if(true) o
            //5. if(b+5<20) o
            //6.if(gender = true) o
        }
    }
    例3-3)
    /*
    Java 프로그램으로 작성하시오
    1. int형 변수 gender 를 선언하고, 0 또는 1을 대입한다 (어떤 것이라도
    상관없음)
    또한, int 형 변수 age 를 선언하고, 적당한 숫자를 대입한다.
    2. 화면에 “안녕하세요” 를 표시한다
    3. 만약 변수 gender 가 0이면 “나는 남자입니다", 그렇지 않으면 “나는
    여자입니다" 를 표시한다
    4. 만약 변수 gender 가 남자이면 age 변수의 값을 표시하고, 뒤에 “살입니다"
    를 붙여서 표시한다.
    5. 마지막에 “잘 부탁합니다" 를 표시한다
    */
    
    package com.company.quiz;
    
    public class Quiz_3_3 {
        public static void main(String[] args) {
    
            int gender = 0;
            int age = 27;
    
            System.out.println("안녕하세요");
    
            if(gender == 0){
                System.out.println("나는 남자입니다");
                System.out.println(age + "살입니다");
    		}else
                System.out.println("나는 여자입니다");
            	System.out.println("잘 부탁합니다");
        }
    }

    例3-4)
    /*
    3행의 clear 가 false 일 경우 “영화를 본다"
    다음에 “잔다" 를 표시하기 위해,
    9행에 “잔다"를 표시하는 행을
    추가하였다.
    하지만 프로그램이 의도한 대로 움직이지 않았다. 어느 부분의 오류 때문에 어떤 현상이 발생하는지 생각 해
    보시오.
    그리고 프로그램을 수정 하시오.
    */
    
    package com.company.quiz;
    
    public class Quiz_3_4 {
        public static void main(String[] args) {
            boolean clear = true;
            if (clear == false) {
                System.out.println("세탁을 한다");
                System.out.println("산책을 한다");
            } else {
                System.out.println("영화를 본다");
                System.out.println("잔다");
            }
        }
    }

    例3-5)
    /*
    switch 문을 이용하여 다음 조건을 만족하는 프로그램을 작성하시오
    1. 화면에 “[메뉴] 1:검색 2:등록 3:삭제 4:변경 >” 을 표시한다
    2. 키보드로 숫자를 입력하고, 변수 selected 에 대입한다.
    3. 만약 변수 selected 가 1 이면 “검색합니다", 2이면 “등록합니다", 3이면
    “삭제합니다", 4이면 “변경합니다"를 표시한다
    4. selected 가 1 부터 4 사이의 값이 아니라면 아무것도 하지 않는다
    */
    
    package com.company.quiz;
    
    import java.util.Scanner;
    
    public class Quiz_3_5 {
        public static void main(String[] args) {
            System.out.println("+====================+");
            System.out.println("|         메뉴        |");
            System.out.println("+====================+");
            System.out.println("| 1. 검색             |");
            System.out.println("| 2. 등록             |");
            System.out.println("| 3. 삭제             |");
            System.out.println("| 4. 변경             |");
            System.out.println("+====================+");
            System.out.println("번호를 입력해주세요");
            System.out.println(">>");
    
            int number = new java.util.Scanner(System.in).nextInt();
    
            switch (number) {
                case 1 -> System.out.println("검색합니다");
                case 2 -> System.out.println("등록합니다");
                case 3 -> System.out.println("삭제합니다");
                case 4 -> System.out.println("변경합니다");
                default -> System.out.println("아무것도 하지 않는다");
            }
        }
    }

    レイヤ3-5の例
    TIP 1)
    package com.company;
    
    import java.util.Scanner;
    
    public class note {
        public static void main(String[] args) {
               Scanner scanner = new Scanner(System.in);
    
               int selected = scanner.nextInt();
            }
        }
    これにより、スキャナというクラスを指定することで、スキャナ変数を容易に使用してコードを簡略化することができます.
    Tip 2)
     String number = new Scanner(System.in).nextLine();
     
     case "1":
     	System.out.println("검색")
    既存のint型で変数を作成して実行すると、aの同じ文字列を入力するときにエラーが発生し、Stringを使用して変数を文字列として作成し、caseの横に「1」、「2」、「3」と表示すると、aの同じ文字列を入力するときにエラーは発生しません.
    例3-6)
    /*
    다음 조건을 만족하는 프로그램을 작성하시오
    1. 화면에 “[숫자 맞추기 게임]” 을 표시한다
    2. 0 부터 9 까지의 정수 중에서 랜덤하게 수를 1개 생성해서 변수 ans 에 대입한다
    3. for 문을 이용해 “5회 반복 하는 루프"를 만든다. 아래의 4. ~ 7. 은 루프 안에 기술 한다
    4. 화면에 “0 ~ 9 사이의 숫자를 입력 하세요” 를 표시한다
    5. 숫자를 입력해, 변수 num 에 대입한다
    6. 만약 변수 num 이 변수 ans 와 같으면 “정답!” 이라고 화면에 표시하고 반복을 종료
    7. 만약 변수 num 이 변수 ans 와 같지 않으면 “다릅니다"를 표시한다
    8. 반복 블록의 바깥에, “게임을 종료합니다" 라고 화면에 표시한다
     */
    package com.company.quiz;
    
    import java.util.Scanner;
    
    public class Quiz_3_6 {
        public static void main(String[] args) {
            System.out.println("+=====================+");
            System.out.println("|    숫자 맞추기 게임    |");
            System.out.println("+=====================+");
    
            int ans = new java.util.Random().nextInt(9);
    
            for (int i = 0; i < 5; i++) {
                System.out.println("0~9사이의 숫자를 입력하세요");
                int num = new Scanner(System.in).nextInt();
                if (num == ans) {
                    System.out.println("정답!");
                } else
                    System.out.println("다릅니다");
            }
                System.out.println("게임을 종료합니다");
    
        }
    }

    その他の例-gugudanを作成)
    package com.company.quiz;
    
    import java.util.Scanner;
    
    public class gugudan {
        public static void main(String[] args) {
    //        for (int i = 0; i < 10; i++) {
    //            for (int j = 0; j < 10; j++) {
    //                System.out.print(i*j);
    //                System.out.print(" ");
    //
    //            }
    //            System.out.println();
    //        }
            for (int i = 0; i < 10; i++) {
    
    
                System.out.println("첫번째 숫자를 입력하세요 : ");
                System.out.print(">>");
                int a = new Scanner(System.in).nextInt();
                if(a>9){
                    System.out.println("범위를 초과하였습니다. 숫자의 범위는 0~9입니다.");
                    continue;
                }
    
                System.out.println("두번째 숫자를 입력하세요 : ");
                System.out.print(">>");
                int b = new Scanner(System.in).nextInt();
                if(b>9){
                    System.out.println("범위를 초과하였습니다. 숫자의 범위는 0~9입니다.");
                    continue;
                }
    
                System.out.println("두 수의 곱은 " + (a * b));
            }
        }
    }