본문 바로가기

한화시스템 BEYOND SW캠프/TIL

[4주차] 24.02.01 목요일

Java Programming

 

package com.encore.loop;

import java.util.Scanner;

/*
    while (조건식) {
        statement;
        [증감식 or 분기문]
    }
    증감식 값이 없으면 무한루프
    필요에 따라서 while(true) 무한 반복을 유도할 수 있다.

    초기값;
    do {
        statement;
        [증감식 or 분기문]
    } while (조건식);

    while(true) - 무한루프
    do ~ while (false) - 한번 수행
 */

public class LoopDemo02 {

    // default constructor
    public LoopDemo02() {

    }

    // 1 ~ 난수(100)까지의 합을 구하고 싶다.
    public void sumRandom() {
        int nan = (int) (Math.random() * 100) + 1;
        System.out.println("nan = " + nan);
        int sum = 0;

        for (int idx = 1; idx <= nan; idx++) {
            sum += idx;
        }

        System.out.println("sum = " + sum);
    }

    // 난수 두 개를 발생시켜서 최솟값부터 최댓값까지의 합을 구하고 싶다면?
    public void sumRandomTow() {
        int nan1 = (int) (Math.random() * 100) + 1;
        int nan2 = (int) (Math.random() * 100) + 1;
        int max = nan1;
        int min = nan2;
        int sum = 0;

        System.out.println("nan1 = " + nan1);
        System.out.println("nan2 = " + nan2);

        if (nan2 > max) {
            max = nan2;
            min = nan1;
        }

        for (int i = min; i <= max; i++) {
            sum += i;
        }

        System.out.println("sum = " + sum);
    }

    // A ~ Z 출력하는 구문을 작성한다면?
    public void charPrint(char start, char end) {
        for (int i = (int) start; i <= (int) end; i++) {
            System.out.printf("%c \t", i);
        }
    }

    // 1 ~ 100 사이의 홀수의 합을 출력하다면?
    public void sumOdd() {
        int sum = 0;
        for (int i = 1; i <= 100; i += 2) {
            sum += i;
        }
        System.out.println("sum = " + sum);
    }

    // 1 ~ 100 사이의 난수 발생시킨 후 짝수의 개수가 몇개인지 출력한다면?
    public void countEven() {
        int cnt = 0;
        int nan1 = (int) (Math.random() * 100) + 1;
        int nan2 = (int) (Math.random() * 100) + 1;
        System.out.println("nan1 = " + nan1);
        System.out.println("nan2 = " + nan2);

        if (nan1 >= nan2) {
            for (int i = nan2; i <= nan1; i++) {
                if (i % 2 == 0) {
                    cnt++;
                }
            }
        } else {
            for (int i = nan1; i <= nan2; i++) {
                if (i % 2 == 0) {
                    cnt++;
                }
            }
        }

        System.out.printf("짝수의 개수는 %d개 입니다.", cnt);
    }

    // 매개변수로 문자열을 입력받아서 문자를 하나씩 추출하여 출력하고 싶다면?
    public void splitString(String str) {
        System.out.println("args -> " + str);

        for (int i = 0; i < str.length(); i++) {
            System.out.print(str.charAt(i) + " ");
        }
    }

    // Scanner를 이용해서 값을 입력받고 1부터 차례로 누적해서 합을 구하다가 입력한 값을 넘으면 중단하고
    // 마지막으로 더해진 값과 그 때까지의 합을 출력하고 싶다면?
    // 입력예) 100
    // 출력예) 14 105
    public void sumBreak() {
        Scanner sc = new Scanner(System.in);
        System.out.print("입력값 : ");
        int num = sc.nextInt();
        int sum = 0;

        for (int i = 0; i < num; i++) {
            sum += i;
            if (sum > num) {
                System.out.println("마지막으로 더해진 값 : " + i);
                System.out.println("지금까지의 합 : " + sum);
                break;
            }
        }
    }

    public void nestedFor() {
        for (int row = 0; row < 10; row++) {
//            System.out.println("row idx = " + row);
            for (int col = 0; col < 10; col++) {
//                System.out.print(col + "\t");
                System.out.print("*");
            }
            System.out.println();
        }
    }

    public void gugudan() {
        for (int dan = 2; dan <= 9; dan++) {
            System.out.printf(">>>> %d 단 <<<<", dan);
            System.out.println();
            for (int number = 1; number <= 9; number++) {
                System.out.print(dan + " * " + number + " = " + dan * number + "\t");
            }
            System.out.println();
        }
    }

    public void gugudanTable() {
        for (int dan = 2; dan <= 9; dan++) {
            System.out.printf(">>>> %d 단 <<<<", dan);
            System.out.println();
            gugudanTimes(dan);
        }
    }

    private void gugudanTimes(int dan) {
        for (int number = 1; number <= 9; number++) {
            System.out.print(dan + " * " + number + " = " + dan * number + "\t");
        }
        System.out.println();
    }

    // i, j 변수만 출력(5 * 5)
    public void printIJ() {
        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <= 5; j++) {
                System.out.print(j);
            }
            System.out.println();
        }
    }

    public void forLine() {
        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <= 5; j++) {
                System.out.print(i + j);
            }
            System.out.println();
        }
    }

    // break, continue
    // break : 가장 가까운 루프구문을 빠져나가는 명령어
    // continue : 조건에 만족할 경우 실행을 하지 않고 다음 차례로 이동시키는 명령어
    public void gugudan02() {
        for (int dan = 1; dan <= 9; dan++) {
            System.out.printf(">>>> %d 단 <<<<", dan);
            System.out.println();
            for (int number = 1; number <= 9; number++) {
                System.out.print(dan + " * " + number + " = " + dan * number + "\t");
            }
            if (dan == 5) {
                break;
            }
            System.out.println();
        }
    }

    // while
    public void whileOneToTen() {
        int idx = 1;
        while (idx <= 10) {
            System.out.print(idx + "\t");
            idx++;
        }
    }

    // Scanner로부터 문자열을 입력받아서 for, while 구문으로 입력된 문자열의 각 문자의 인덱스와 문자를 쌍으로 출력
    public void printStrIdx() {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        int idx = 0;

        for (int i = 0; i < str.length(); i++) {
            System.out.println(i + " : " + str.charAt(i));
        }

        System.out.println();

        while (idx < str.length()) {
            System.out.println(idx + " : " + str.charAt(idx));
            idx++;
        }
    }

    public void doWhileTest() {
        System.out.println("do ~ while");
        do {
            System.out.println("false이지만 한번은 무조건 수행");
        } while (false);
    }
}

 

import com.encore.loop.LoopDemo02;

public class LoopMain02 {
    public static void main(String[] args) {
        LoopDemo02 demo = new LoopDemo02();
//        demo.sumRandom();
//        demo.sumRandomTow();
//        demo.charPrint('A', 'Z');
//        demo.sumOdd();
//        demo.countEven();
//        demo.splitString("JavaProgramming");
//        demo.sumBreak();
//        demo.nestedFor();
//        demo.gugudan();
//        demo.gugudanTable();
//        demo.printIJ();
//        demo.forLine();
//        demo.gugudan02();
//        demo.whileOneToTen();
//        demo.printStrIdx();
        demo.doWhileTest();
    }
}

'한화시스템 BEYOND SW캠프 > TIL' 카테고리의 다른 글

[5주차] 24.02.05 월요일  (0) 2024.02.05
[4주차] 24.02.02 금요일  (0) 2024.02.02
[4주차] 24.01.31 수요일  (0) 2024.01.31
[4주차] 24.01.30 화요일  (0) 2024.01.30
[4주차] 24.01.29 월요일  (0) 2024.01.29