[Java] 기본자료형 실습문제 모음집

이지연·2025년 12월 10일

Java 기본자료형의 문법과 입출력, 연산, 반복문, 조건문, 문자열 처리 등을 연습하기 위한 기본 예제 정리


BufferedReader와 StringTokenizer로 입력 처리

BufferedReader + split으로 입력 나누기

입력 예시:
abc bcd efg

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        // 한 줄 입력: "abc bcd efg"
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine();

        // 공백 기준으로 문자열 분리
        String[] arr = input.split(" ");

        System.out.println(arr[0]); // abc
        System.out.println(arr[1]); // bcd
        System.out.println(arr[2]); // efg

        br.close();
    }
}

BufferedReader + StringTokenizer

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        // 한 줄 입력: "abc bcd efg"
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine();

        // 공백을 기준으로 토큰화
        StringTokenizer st = new StringTokenizer(input);

        System.out.println(st.nextToken()); // abc
        System.out.println(st.nextToken()); // bcd
        System.out.println(st.nextToken()); // efg

        br.close();
    }
}

정수 나눗셈과 형 변환 (0.25 출력)

요구사항: 0.25를 출력하기 위해 정수 나눗셈에 형 변환을 적용한다.

public class Main {
    public static void main(String[] args) {
        int a = 1;
        int b = 4;

        // (double) a 로 형 변환하여 실수 나눗셈 수행
        System.out.println((double) a / b); // 0.25
    }
}

문자열에서 알파벳 개수 세기

요구사항: 문자열에 포함된 알파벳(a~z, A~Z) 개수 출력.

public class Main {
    public static void main(String[] args) {
        String st1 = "01aZFbcsdf한글123";
        int count = 0;

        for (int i = 0; i < st1.length(); i++) {
            char ch = st1.charAt(i);
            // 소문자 또는 대문자 알파벳인지 검사
            if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
                count++;
            }
        }

        System.out.println(count); // 알파벳 개수
    }
}

도어락 키 예제 (삼항 연산자)

요구사항: 비밀번호를 입력받아 맞으면 “문이 열렸습니다.”, 틀리면 “비밀번호가 틀렸습니다.” 출력.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String answer = "1234";                 // 정답 비밀번호
        String answerInput = br.readLine();     // 사용자 입력

        // 삼항 연산자 사용
        String result = answerInput.equals(answer)
                ? "문이 열렸습니다."
                : "비밀번호가 틀렸습니다.";

        System.out.println(result);

        br.close();
    }
}

고객센터 예제 (switch문)

요구사항: 번호를 입력받아 해당 서비스 안내 문구 출력.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int callNumInput = Integer.parseInt(br.readLine());

        switch (callNumInput) {
            case 1:
                System.out.println("대출 업무 입니다.");
                break;
            case 2:
                System.out.println("예금 업무 입니다.");
                break;
            case 3:
                System.out.println("적금 업무 입니다.");
                break;
            default:
                System.out.println("번호를 잘못 입력하셨습니다.");
                break;
        }

        br.close();
    }
}

반복 도어락 키 예제

요구사항:

  • 비밀번호를 맞추면 “문이 열렸습니다.” 출력 후 즉시 종료
  • 5회 입력을 초과할 때까지 맞추지 못하면 “비밀번호 횟수를 초과하였습니다.” 출력 후 종료
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String answer = "1234";
        int count = 0;

        while (true) {
            String answerInput = br.readLine();

            if (answerInput.equals(answer)) {
                System.out.println("문이 열렸습니다.");
                break;
            } else {
                System.out.println("비밀번호가 틀렸습니다.");
            }

            count++;

            if (count == 5) {
                System.out.println("비밀번호 횟수를 초과하였습니다.");
                break;
            }
        }

        br.close();
    }
}

구구단 예제 (입력한 단수, 무한 반복)

요구사항:

  • 정수를 입력받아 그 수의 구구단(1단 ~ 9단까지) 출력
  • 입력은 무한히 반복
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        while (true) {
            int input = Integer.parseInt(br.readLine()); // 단수 입력
            int n = 1;

            while (n < 10) {
                System.out.println(input + "X" + n + "=" + (input * n));
                n++;
            }
        }
    }
}

1~20까지 짝수의 총합

요구사항: 1부터 20까지의 수 중 짝수의 합 출력.

public class Main {
    public static void main(String[] args) {
        int sum = 0;

        for (int i = 0; i <= 20; i++) {
            if (i % 2 == 0) { // 짝수 판별
                sum += i;
            }
        }

        System.out.println(sum); // 짝수 합
    }
}

두 수의 최대공약수 구하기

요구사항: 두 정수의 최대공약수(GCD) 구하기.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());

        int min = (a > b) ? b : a; // 또는 Math.min(a, b)
        int answer = 0;

        // 1부터 min까지 모두 검사
        for (int i = 1; i <= min; i++) {
            if (a % i == 0 && b % i == 0) {
                answer = i;
            }
        }

        System.out.println(answer);

        br.close();
    }
}

소수 판별 예제

요구사항: 정수 n이 소수인지 여부를 판별.
소수: 1과 자기 자신을 제외한 수로 나누어지지 않는 수.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());
        boolean isTrue = true;

        // i * i <= n 으로 가지치기(제곱근까지만 검사)
        for (int i = 2; i * i <= n; i++) {
            if (n % i == 0) {
                isTrue = false;
                break;
            }
        }

        if (n == 1) {
            isTrue = false;
        }

        String result = isTrue ? "소수입니다." : "소수가 아닙니다.";
        System.out.println(result);

        br.close();
    }
}

2~9단 전체 구구단 출력

요구사항: 2단부터 9단까지 모든 구구단을 한 번에 출력.

public class Main {
    public static void main(String[] args) {
        for (int i = 2; i < 10; i++) {
            System.out.println(i + "단 입니다.");

            for (int j = 1; j < 10; j++) {
                System.out.println(i + "X" + j + "=" + (i * j));
            }

            System.out.println("=========================");
        }
    }
}
profile
Eazy하게

1개의 댓글

comment-user-thumbnail
2025년 12월 11일

제가 아는 구구단은 아이돌에서 끝났습니다

답글 달기