Language/Java

사용자 입력과 예외 처리

느낌표 공장장 2021. 1. 26. 17:45

키보드로부터 한 줄 입력받기

숫자나 문자와 같은 경우는 그 자체를 값으로 표현할 수 있지만 스캐너와 같은 타입들은 값을 표현하기 애매하다.

그래서 이와 같은 타입의 값을 생성하기 위해, new라는 키워드를 이용하게 된다.

new 뒤에 타입 이름을 넣어주고 그 뒤에 괄호를 열고 닫으면 그 타입의 값이 생성되는 구조.

// 새 값을 생성하기 위한 키워드(new) + 타입명 + ()
new TypeName() 
// parameter는 타입에 따라 필요한 경우도 있고 그렇지 않은 경우도 있음
new TypeName(parameter) 

1. 코드 영역에 "Scanner"를 입력하면 팝업이 뜬다.

2. 가장 윗줄의 "Scanner java.util"이 선택된 채로 엔터키를 입력하면 첫 번째 줄에 코드 한 줄이 생겨난다.

3. 스캐너는 파라미터가 필요한 타입. 입력 소스를 필요로 한다. 

import java.util.Scanner;

public class Input {
    public static void main(String[] args) {
        Scanner scanner;
        scanner = new Scanner(System.in);
    }
}

* System.in : 표준 입력 인터페이스

* System.out :  표준 출력 인터페이스. 표준 출력을 통해 무언가를 출력할 때 사용.

스캐너라는 것이 표준 입력을 통해서 사용자로부터 문자열을 입력받는 것.

 

Scanner을 통해 문자열을 입력받는 코드 

nextLine() 기능 : 사용자가 키보드로 입력한 문자열 타입의 값을 받아올 수 있다.

문자열을 되돌려주기 때문에 String 타입의 변수에 그대로 대입해 줄 수 있다.

scanner.nextLine();
public class Input {
    public static void main(String[] args) {
        Scanner scanner;
        scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        System.out.println(input);
    }
}

입력한 문장을 출력해낸다.(초록색이 입력한 문장)


키보드로부터 띄어쓰기 단위로 입력받기

next를 이용하면 nextLine(입력한 줄을 그대로 문자열 값으로 되돌려줌)과는 조금 다르게 띄어쓰기 단위로 문자를 분할해서 여러 번 되돌려주는 기능이 있다.

import java.util.Scanner;

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

        String input1 = scanner1.next();
        String input2 = scanner1.next();
        String input3 = scanner1.next();

        System.out.println(input1);
        System.out.println(input2);
        System.out.println(input3);
    }
}

띄어쓰기 단위로 모든 단어들이 다 분리돼 서 출력된다.


키보드로 입력받은 숫자 사용하기

import java.util.Scanner;

public class Input {
    public static void main(String[] args) {
    
        System.out.println("숫자를 하나 입력해주세요");
        Scanner scannerNumber = new Scanner(System.in);
        String intInput = scannerNumber.nextLine();
        System.out.println(intInput + 1);
        
   }
}

234가 숫자가 아닌 문자열 타입으로 인식이 된 것을 볼 수 있다. 1도 마찬가지.

문자열 타입의 + 연산자를 사용하게 되면, 뒤에 있는 숫자까지도 문자열로 변환해서 문자열의 연결이 이루어지게 된다.

 

 

Integer.parseInt() : 파라미터로 문자열을 넘겨주면 숫자로 변환해서 반환하는 기능

int number = Integer.parseInt(intString);
System.out.println("다음 숫자는" + number + 1 + "입니다.");
import java.util.Scanner;

public class Input {
    public static void main(String[] args) {
    
        System.out.println("숫자를 하나 입력해주세요");
        Scanner scannerNumber = new Scanner(System.in);
        String intInput = scannerNumber.nextLine();
        
        int intValue = Integer.parseInt(intInput);
        System.out.println(intValue + 1);
        
   }
}

입력 값, 1023 / 출력 값 : 1024

 

예제

import java.util.Scanner;

public class Input {
    public static void main(String[] args) {
    
        Scanner scannerEx = new Scanner(System.in);
        System.out.println("달러 환율을 입력하세요.");
        String exchangeString = scannerEx.nextLine();
        
        System.out.println("순대국값을 입력하세요.");
        String priceOfSoupString = scannerEx.nextLine();
        
        double exchange = Double.parseDouble(exchangeString);
        double priceOfSoup = Double.parseDouble(priceOfSoupString);
        
        System.out.println("순대국은 " + priceOfSoup / exchange + "달러입니다.");
   }
}


예외 처리

위의 예제에서 숫자 대신 "사달러" 라고 입력하면 오류가 발생한다. 이와 같은 예외에 대응하는 것이 무척이나 중요하다.(특히 사용자와 상호작용하는 프로그램이라면)

 

자바에서의 예외 처리는 try-catch 구문을 사용한다.

try { 
	예외 발생 가능성이 있는 코드
} catch (Exception e) {
	예외가 발생했을 때 실행될 코드
}

Exception : 모든 타입의 예외발생시, cathch 블록이 실행된다.

(* NumberFormatException 처럼 예외의 경우를 지정해줄 수 있다.)

import java.util.Scanner;

public class Input {
    public static void main(String[] args) {
    
        System.out.println("숫자를 하나 입력해주세요");
        Scanner scannerNumber = new Scanner(System.in);
        String intInput = scannerNumber.nextLine();
        System.out.println(intInput + 1);
        
        // 예외 처리하기
        try {
            int intValue = Integer.parseInt(intInput);
            System.out.println(intValue + 1);
        } catch (Exception e) {
            System.out.println("숫자를 입력해야 합니다.");
        }
        
   }
}

여기서 intValue 변수는  try안에서 선언되었는데,

자바에서는 중괄호 블록 안에서 선언된 변수는 그 안에서만 사용될 수 있다.(그래서 try안으로 넣어준 것)

 

 

 

유투브 "초간단 자바"님 영상을 통해 공부한 내용입니다 !
www.youtube.com/watch?v=9YEmfIjnvJ8

'Language > Java' 카테고리의 다른 글

반복문  (0) 2021.03.30
조건문  (0) 2021.01.30
데이터의 형태, 자료형  (0) 2021.01.25
연산자  (0) 2021.01.19
숫자, 문자, 주석 그리고 변수  (0) 2021.01.18