숫자가 아닌 입력을 받았을 때
0으로 나누기 연산을 시도하였을 때

 

정상적으로 프로세스가 완료되었을 때

import java.util.Scanner;

public class HW1_calculator {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("::::::::::사칙연산 계산기::::::::::");
        int a = 0, b = 0; // 입력값 2개
        char c;   // 연산자 1개

        String input; // 검사를 위한 임시 String 변수

        // 첫번째 수 검사
        out: while (true) {
            System.out.println("첫번째 숫자를 입력해주세요.");
            System.out.print(">>> ");
            input = sc.next();
            for (int i=0; i<input.length(); i++) {
                if (input.charAt(i) > 57 || input.charAt(i) < 48) {
                    System.out.println("유효하지 않은 숫자");
                    break;
                } else {
                    a = Integer.parseInt(input);
                    break out;
                }
            }
        }

        // 연산자 입력 후 검사
        while (true) {
            System.out.println("연산자를 입력해주세요 (+, -, *, /)");
            System.out.print(">>> ");
            input = sc.next();
            c = input.charAt(0);
            if (c == '+' || c == '-' || c == '*' || c == '/') {
                break;
            } else {
                System.out.print("올바른 연산자가 아닙니다.\n\n");
            }
        }

        // 두번째 수 검사
        out: while (true) {
            System.out.println("두번째 숫자를 입력해주세요.");
            System.out.print(">>> ");
            input = sc.next();
            for (int i=0; i<input.length(); i++) {
                if (input.charAt(i) > 57 || input.charAt(i) < 48) {
                    System.out.println("유효하지 않은 숫자");
                    break;
                } else {
                    b = Integer.parseInt(input);
                    break out;
                }
            }
        }

        // 계산 후 출력
        System.out.print("\n");
        System.out.print("계산 결과\n");
        if (c == '+') {
            System.out.printf("%d %c %d = %d", a, c, b, a+b);
        } else if (c == '-') {
            System.out.printf("%d %c %d = %d", a, c, b, a-b);
        } else if (c == '*') {
            System.out.printf("%d %c %d = %d", a, c, b, a*b);
        } else if (c == '/') {
            if ( b == 0) {
                System.out.println("0으로 나눌 수 없습니다!");
            } else {
                System.out.printf("%d %c %d = %.2f", a, c, b, (double) a / b);
            }
        } else {
            System.out.println("예상하지 못한 오류 발생");
        }
    }
}

 

import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Lottery {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        /*
            로또 번호 생성기
            1. 몇 줄 생성할 것인지 입력 받으면
            2. 난수를 생성해서 배열에 저장하고
            3. 출력해줌
         */

        int[][] nums = null;

        while (true) {
            // 유저 입력으로 메뉴 선택
            System.out.println(":::::::::::::: 로또 번호 생성기 :::::::::::::::");
            System.out.println("[1] 생성하기\t\t\t[2] 나가기");
            System.out.print(">>> ");
            int user_input = sc.nextInt();

            // 생성 루틴
            if (user_input == 1) {
                // 생성할 줄 수 입력
                System.out.println("\n몇 줄 생성할까요? (ex. 5)");
                System.out.print(">>> ");
                user_input = sc.nextInt();

                // 배열 초기화
                nums = new int[user_input][6];

                // 난수 생성 후 배열에 저장
                for (int i=0; i<user_input; i++) {
                    Set<Integer> uniqueNumbers = new HashSet<>(); // 같은 줄에 있는 숫자끼리는 중복될 수 없어야 하므로 '집합'을 사용

                    while (uniqueNumbers.size() < 6) {
                        int r = (int)((Math.random() * 45) + 1);    // 0 ~ 44에서 랜덤값 +1 -> 1 ~ 45 뽑힘
                        uniqueNumbers.add(r);
                    }

                    // Set의 내용을 배열에 저장 (for each 문)
                    int index = 0;
                    for (int number : uniqueNumbers) {
                        nums[i][index++] = number;
                    }

                    // 오름차순 정렬
                    Arrays.sort(nums[i]);
                }

                // 결과 출력
                System.out.print("\n:::::::::: 오늘의 로또 번호 조합 :::::::::::\n");
                for (int i=0; i<user_input; i++) {
                    System.out.printf("%d번째 조합: ", i+1);
                    System.out.print(Arrays.toString(nums[i]));
                    System.out.print("\n");
                }
                System.out.print(":::::::::::::::: Good Luck! ::::::::::::::::\n\n");

                // 결과 출력 후 재시작 이전 확인
                System.out.println("계속하려면 아무 키나 누르세요.");
                System.out.print(">>> ");
                sc.nextLine(); // 입력 버퍼 비우기
                sc.nextLine(); // 사용자 입력 대기
                System.out.print("\n\n");

            } else if (user_input == 2){
                break;

            } else {
                System.out.println("정확한 숫자를 입력해주세요.\n");
            }
        }
        sc.close(); // Scanner 닫기
    }
}

(좌) 오름차순 정렬 / (우) 내림차순 정렬

 

import java.util.Arrays;
import java.util.Scanner;

public class Example1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 1. 몇 개를 정렬?
        System.out.print("몇 개를 정렬하시겠습니까? ---> ");
        int size = sc.nextInt();

        // 결과를 저장할 배열 선언
        int[] nums = new int[size];
        
        // 2. 숫자의 갯수에 맞게 입력
        System.out.println("정렬하실 숫자를 입력해주십시오.");
        for (int i=0; i<size; i++) {
            System.out.printf("%d칸 중 %d개 입력중... --> ", size, i+1);
            nums[i] = sc.nextInt();
        }
        // 3. 오름/내림
        System.out.println("정렬 방식을 선택해주세요.");
        System.out.print("오름차순 (0) / 내림(1) --> ");
        int how = sc.nextInt();

        // 4. 방법에 맞게 정렬
        // 선택 정렬로, 오름차순 정렬
        if (how == 0) {
            for (int i = 0; i < nums.length; i++) {
                // 인덱스 처음에서부터 순차적으로 min 값 초기 할당
                int min_index = i;
                for (int j = i+1; j < nums.length; j++) {
                    // 전체를 검사하며 min_index 검사 후 초기화
                    if (nums[j] < nums[min_index]) {
                        min_index = j;
                    }
                }
                // 자리 이동 (Swap)
                int temp = nums[i];
                nums[i] = nums[min_index];
                nums[min_index] = temp;
            }
        } else if (how == 1) {
            for (int i = 0; i < nums.length; i++) {
                // 인덱스 처음에서부터 순차적으로 max 값 초기 할당
                int max_index = i;
                for (int j = i+1; j < nums.length; j++) {
                    // 전체를 검사하며 min_index 검사 후 초기화
                    if (nums[j] > nums[max_index]) {
                        max_index = j;
                    }
                }
                // 자리 이동 (Swap)
                int temp = nums[i];
                nums[i] = nums[max_index];
                nums[max_index] = temp;
            }
        }

        // 5. 결과 출력
        System.out.print(Arrays.toString(nums));
    }
}

+ Recent posts