Java 문법과 콘솔 입출력
JDK·main·변수·배열·조건·반복으로 입력을 검증하는 명단 프로그램 만들기
이번 문서에서 만드는 것
1주는 Java로 가상 회원 이름과 점수를 입력받는 콘솔 프로그램을 만듭니다. Spring을 실행하기 전에 컴파일, main, 타입, 조건·반복과 예외를 익힙니다. 이 과정은 JDK 21을 기준으로 하며 팀의 설치 버전을 README에 기록합니다.
JDK와 첫 실행
터미널에서 java -version, javac -version을 확인합니다. java는 실행, javac는 소스 컴파일에 사용합니다. 둘이 서로 다른 설치를 가리키면 PATH와 JAVA_HOME을 확인합니다. IDE 안에서는 되는데 터미널에서 안 된다면 IDE의 JDK 설정과 터미널 설정이 다를 수 있습니다.
새 폴더에 Main.java를 만듭니다. 대소문자를 포함한 파일 이름과 public 클래스 이름이 같아야 합니다.
import java.util.Scanner;
public class Main { public static void main(String[] args) { try (Scanner scanner = new Scanner(System.in)) { System.out.print("이름: "); String name = scanner.nextLine().strip(); if (name.isEmpty()) { System.out.println("이름은 비울 수 없습니다."); return; } System.out.print("점수(0~100): "); try { int score = Integer.parseInt(scanner.nextLine().strip()); if (score < 0 || score > 100) { System.out.println("0~100 사이의 정수를 입력해 주세요."); return; } String result = score >= 60 ? "통과" : "다시 연습"; System.out.println(name + ": " + result); } catch (NumberFormatException error) { System.out.println("정수로 입력해 주세요."); } for (int week = 1; week <= 3; week++) { System.out.println(week + "주차 세션"); } } }}javac -encoding UTF-8 Main.javajava Main컴파일 결과 Main.class가 생깁니다. 실행할 때는 java Main.class가 아니라 java Main입니다. Java 21에서는 java Main.java로 소스 파일을 바로 실행할 수도 있지만 이번 주에는 컴파일과 실행을 구분해서 경험합니다.
타입과 제어 흐름 읽기
| 코드 | 뜻 | 흔한 혼동 |
|---|---|---|
int score | 정수 값 | 입력 문자열을 자동 변환하지 않음 |
String name | 문자열 객체 참조 | 내용 비교는 보통 equals 사용 |
boolean | true 또는 false | 숫자 0·1로 대신하지 않음 |
if, return | 분기와 현재 메서드 종료 | return 뒤 같은 경로의 코드가 실행되지 않음 |
for | 조건이 참인 동안 반복 | <와 <= 경계 차이 |
문자열 내용이 같은지 볼 때 name.equals("가람")을 사용합니다. ==는 참조 타입에서 같은 객체인지 비교하므로 문자열 내용 비교에 의존하면 안 됩니다. null일 수 있는 값은 먼저 처리하거나 "가람".equals(name)처럼 비교합니다.
정수 나눗셈 5 / 2는 2이고 실수 결과가 필요하면 5 / 2.0처럼 계산합니다. 타입을 무작정 바꾸지 말고 결과가 정수여야 하는지부터 결정합니다.
배열과 메서드 연습
Main 클래스 안에 다음 메서드를 추가하고 main에서 호출해 보세요. main 안에 메서드를 중첩 정의하지 않습니다.
static int countPassed(int[] scores) { int count = 0; for (int score : scores) { if (score >= 60) count++; } return count;}countPassed(new int[]{59, 60, 100})은 2, 빈 배열은 0이어야 합니다. 배열의 길이는 생성 후 고정됩니다. 회원을 계속 추가하는 구조는 4주의 컬렉션에서 다룹니다.
세션 실습과 완료 기준
권장 90분: 설치·실행 20분, 입력·타입 25분, 조건·배열 25분, 리뷰 20분입니다.
실습은 빈 이름, abc, -1, 59, 60, 101을 입력하고 프로그램 종료 지점과 출력을 기록하는 것입니다. 다음으로 countPassed에 범위 밖 점수가 들어오면 IllegalArgumentException을 발생시키도록 확장합니다. 입력 메시지는 main, 계산 규칙은 메서드에 둡니다.
완료 기준: 컴파일 오류와 실행 중 예외를 구분하고 조건의 경계값을 검사하며 직접 작성한 메서드를 호출할 수 있습니다. 제출물은 소스·실행 명령·입력과 실제 출력 표입니다. .class 파일은 재생성 가능한 빌드 결과이므로 소스와 구별합니다.
더 읽어보기
연결된 PBL 미션과 VOD
| 주차·미션 | 참고 VOD 범위 |
|---|---|
| 1주 · Java 문법 | Java 첫걸음 3·5·6·7장 / Spring Boot 실습 1·2장 |
강좌 안내: 참고 강좌 1. 이 문서는 영상 전체를 옮긴 전사 자료가 아닙니다. 세부 내용은 위 공식 문서에서 확인합니다.