import java.util.Scanner;
 
public class Homework_01 {
    public static void main(String[] args) {
        System.out.println("[심리테스트] 당신의 진짜 성격은?");
        System.out.println("출처: http://www.oatp.co.kr/xe/healingtree/2247 \n");
        System.out.println("Q. 당신은 지금 엘리베이터 앞에 있습니다. 엘리베이터를 기다리는 당신의 모습은 어떤가요?");
        System.out.println("1. 발을 동동 구르고 있다.");
        System.out.println("2. 계속 엘리베이터 버튼을 누르고 있다.");
        System.out.println("3. 주변을 둘러보거나 안내판 등을 보고 있다.");
        System.out.println("4. 그냥 바닥을 쳐다보고 있다.");
        System.out.println("5. 엘리베이터 LED화면을 계속 보면서 '문 열리자마자 타야지' 생각하고 있다.");
        System.out.print("\n입력(1~5 사이를 입력해주세요.) >> ");
        Scanner sc = new Scanner(System.in);
        int num = Integer.parseInt(sc.nextLine());
        
        System.out.println("\n======== 결 과 ========");
        
        if (num == 1)
        {
            System.out.println("1번을 선택한 당신은 다소 예민하고 신경질적입니다.");
            System.out.println("예술적으로 소질이 있어 특기가 생길 수 있습니다.");            
        }
        else if (num == 2)
        {
            System.out.println("2번을 선택한 당신은 생각을 오래 하기보다는 몸을 먼저 움직이는 행동력이 강한사람입니다.");
            System.out.println("어떤 하나의 일에 집중하게 되면 다른 것들은 눈에 잘 안들어와서 한가지 일을");
            System.out.println("제외하고 다른 것들은 소홀히 하는 경우가 있습니다.");
            System.out.println("다만, 행동적이고 재치가 있어 사람들에게 인기가 좋습니다.");
        }
        else if (num == 3)
        {
            System.out.println("3번을 선택한 당신은 마음이 따듯하며 온화하고 인기가 많습니다.");
            System.out.println("하지만 자신의 결점에 대해 알려지는 것을 꺼려해 사람들과");    
            System.out.println("벽을 쌓는 경우가 있습니다. 이로인해 사람들은 이 사람을 냉정하다고 오해하기도 합니다.");
            System.out.println("인맥은 넓지 않으나 한명이라도 깊게 관계를 맺어하는 성향으로 이공계쪽에 잘 어울립니다.");
        }
        else if (num == 4)
        {
            System.out.println("4번을 선택한 당신은  다소 소극적이기 하지만 상당히 솔직함을 가지고 있습니다.");
            System.out.println("타인을 믿는다거나 좋아하게 되는데에 있어 거부감을 느끼지 않기 때문에");    
            System.out.println("대인관계가 넓고 다툼이 적습니다.");
        }
        else if (num == 5)
        {
            System.out.println("5번을 선택한 당신은 안정적인 것을 좋아해 큰 리스크를 안고 무리하게 진행하지 않습니다.");
            System.out.println("어떤 인간관계에 있어 문제가 있어도 합리적으로 어긋난 것을 하지 않는 편입니다.");    
            System.out.println("감정적으로 해결하기 보다는 이성적으로, 논리적으로 행동하기 때문에 사람들이 많이 따르는 편입니다.");
        }
        else
        {
            System.out.println("1~5번 사이에서 입력하라고 부탁드렸는데 당신은 그 외 값을 입력하셨습니다.");
            System.out.println("당신은 숫자를 읽을 수 없는 것 같습니다.");    
            System.out.println("프로그램을 다시 실행 후 1~5 사이의 값을 입력해주세요.");    
        }
        
    }
 
}

이 예제는 자바의 기본 기능인 출력과 스캐너를 이용해 만든 간단한 심리테스트입니다. 너무 지엽적이거나 심화된 내용은 추후 다시 설명하겠습니다.

System.out.println(오브젝트); 는 터미널 화면에 오브젝트 내용을 뿌립니다. 참고로 뿌린 뒤 강제 개행을 하며 강제 개행을 하지 않는 메소드는 System.out.print(오브젝트); 입니다.  오브젝트는 텍스트뿐만 아니라 종류 상관 없이 toString()이라는 메소드가 구현되어 있다면 모두 사용 가능합니다.

\n 은 이스케이프 문자의 일종으로, 스트링 안에 입력하면 해당 부분에서 강제 개행(줄바꿈)을 합니다.

Scanner sc = new Scanner(System.in); 는 스캐너 형태의 인스턴스를 만들어 Scanner 타입의 변수 sc할당(assign)합니다. 초보 단계에서는 키보드 입력을 받으려면 이 코드를 입력해야한다는 것만 숙지하면 됩니다. 참고로 맨 윗부분에 import java.util.Scanner; 도 필수적으로 입력해야 합니다. 그 이유는 지금 몇 문장으로 설명이 불가능하며 참고로 이클립스에서는 Ctrl + Shift + O 단축키를 입력하면 필요한 내용들이 자동으로 import 됩니다.

int num = Integer.parseInt(sc.nextLine());sc.nextLine()을 통해 시스템은 키보드가 입력되기까지 대기하게 됩니다. 문자를 입력하고 enter를 누르면 입력이 완료되어 입력된 텍스트가 스트링 형태로 반환합니다. 이 반환된 스트링을 Interger.parseInt(스트링변수)를 통해 int 형태로 변환한 다음 그것을 num이라는 변수에 할당하는 처음 봤을땐 꽤 복잡한 코드입니다.

자바는 형태가 서로 맞냐 틀리냐를 엄격하게 따지는 문서이므로 스트링 값을 int 형 변수에 할당하려 하면 예외(Exception)를 발생시키고 프로그램을 중단합니다.

if ~ else if ~ else 문은 모든 프로그래밍 언어에서 필수적인 분기 기능입니다. 최초에 if(조건문)에서 조건문이 참이라면(true) 중괄호 안의 if문이 실행되고, 해당 중괄호의 내용이 실행되면 전체 if문을 중단하고 밖으로 나갑니다. 거짓(false)이라면 바로 다음의 else if(조건문)으로 넘어갑니다. 계속 조건을 판단하다 else if의 끝까지 갔는데 조건문이 모두 거짓일 경우 마지막으로 else가 실행됩니다. else 에는 조건문을 붙이지 않습니다.

if문의 특징은 조건문이 참인 곳을 만나면 해당 부분의 중괄호만 실행하고 다른 부분은 더 이상 실행하지 않는다는 것입니다. 또 else if나 else는 옵션이며, if만 단독으로 존재하거나 if – else, 또는 if – else if 로 된 다양한 형태의 조건문을 만드는 것이 가능합니다. 단, if는 첫번째에 필수적으로 존재해야 합니다,