● 예외전가의 필요성
- 프로그램 안정성을 중시하는 자바언어의 특성상, 모든 입출력에 대해 발생할 수 있는 예외적인 상황을 대비해야 한다.
- 지금까지 사용해왔던 출력 메소드는 모두 내부적으로 예외처리가 되어있었지만, 대부분 그렇지 않은것도 많다.
● 예외전가 방법
1. 자바에서의 입출력과 관련된 라이브러리를 사용하기 위해 관련 패키지를 import 한다.
( 예시, import java.io.*; 또는 import java.IOException; )
2. 입/출력이 사용되는 함수 정의부에 다음을 추가한다.
( public static void main(String[] args) throws IOEception )
● System.in.read() - 단일 문자입력
- 입력 Buffer로부터 Data를 아스키코드만큼 입력받는다.
- int형으로 입력 받으므로 적절한 형 변환이 필요하다.
- import로 예외전가가 필요하다. (위내용 참고)
package day01;
import java.io.IOException;
public class Test15 {
public static void main(String[] args) throws IOException {
int val, val2, val3;
System.out.print("입력 : ");
val = System.in.read();
val2 = System.in.read();
val3 = System.in.read();//문자 하나만 처리가능
// System.in.read는 무조건 int타입의 변수로 받아줘야함
System.out.println("입력 data : " + val);
System.out.println("입력 data : " + val2);
System.out.println("입력 data : " + val3);
}
}
* system.in.read 설명
- 끝에 throwds IOEception은 앞서말했듯이 예외전가를 하기위해 입력합니다.
- val, val2, val3라는 변수를 각각 int현으로 선언
- vla, val2, val3 각변수에 입력받기위해 System.in.read를 사용 (문장이 아닌 문자하나만 처리 가능)
- 입력받은 Data를 메시지로 출력해줍니다.
package day01;
import java.io.IOException;
public class Quiz1 {
public static void main(String[] args) throws IOException {
System.out.print("문자 입력: ");
int num =System.in.read();
System.out.println("==== 출 력 ====");
System.out.println("입력하신 문자 :" + (char)num);
System.out.println("소문자로 변환 :" + (char)(num+32));
}
}
* system.in.read 설명
- num이라는 변수에 System.in.read를 사용해서 문자입력받음
- int 정수형타입인 num변수를 앞서 배운 형변환을 통해 char타입으로 변환
- 윗줄과같이 int형 num변수에 입력받은 'A'에 32를 먼저 더하고, 형변환
( 이때, A는 아스키코드로 65이다. a는 97이다. )
https://choseongho93.tistory.com/11 아스키코드표 참고
● Scanner - 데이터 입력 (문자 & 문장 가능 )
- 앞서 설명드렸던 read와 달리 문장으로도 console창에 입력가능하다.
- import를 하고, Scanner를 선언하고 nextLine() 또는 next()등을 이용하여 입력을 받습니다.
package day02;
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int age;
String name;
System.out.println("---입력---");
System.out.print("이름 입력:");
name = input.next();
System.out.print("나이: ");
age = input.nextInt();
System.out.println("---출력---");
System.out.println("이름: " + name);
System.out.println("나이: " + age);
}
}
* Scanner 설명
- Scanner라는 클래스를 new연산자를 통해서 생성해주는데 생성해준 객체명을 input이라는 인스턴스 변수에 저장한다.
- int형과 String형으로 각각 age와 name 변수에 저장한다. ( 이때, int형은 기본값으로 0을, String은 null이 자동저장됨 )
- input이라는 인스턴스(객체)에 있는 next()메소드를 호출해서 콘솔창에 입력받은값을 name변수에 저장한다.
- input에 있는 nextInt()메소드를 호출해서 콘솔창에 입력받은 값을 age변수에 저장한다.
( + next()는 String으로 입력받은값을 사용할때 호출함. / nextInt()는 입력받은값이 정수(숫자)일때 호출함. )
↓ Q. Scanner 문제 ↓
↓ Scanner 퀴즈 정답 ↓
package day02;
import java.util.Scanner;
public class Test02 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("당신의 이름은 무엇입니까?");
String name = input.next();
System.out.print(name+"님의 국어점수 :");
int korea = input.nextInt();
System.out.print(name+"님의 영어점수 :");
int eng = input.nextInt();
System.out.print(name+"님의 수학점수 :");
int math = input.nextInt();
int sum = korea + eng + math; //국,영,수 합계
System.out.println();
System.out.println("===============");
System.out.println("이 름 :" + name);
System.out.println("===============");
System.out.println("국 어 :" + korea);
System.out.println("영 어 :" + eng);
System.out.println("수 학 :" + math);
System.out.println("===============");
System.out.println("합 계 :" + sum);
System.out.println("===============");
}
}
'Programming Language > JAVA' 카테고리의 다른 글
[JAVA] java 반복문과 기타제어문 ( while문&do-while문& break문 & continue문 ) (0) | 2019.07.07 |
---|---|
[JAVA] java반복문( for문 & 이중for문 ) +퀴즈문제 (0) | 2019.07.06 |
[JAVA] java제어문( if문, if-else문, switch-case문 ) +퀴즈문제 (2) | 2019.07.05 |
[JAVA/기초] java 연산자(산술연산자, 증감연산자,대입연산자, 관계연산자, 논리연산자 등) + 퀴즈문제 (0) | 2019.07.04 |
[JAVA] 이스케이프문자 (0) | 2019.07.02 |
[JAVA/초간단] 이클립스 어두운 테마적용하기 & 테마변경 (0) | 2019.07.01 |
[JAVA/기초] 자바 변수 및 문자출력 (데이터 타입 & 형변환) + 퀴즈문제 (0) | 2019.06.30 |
[JAVA/설치] 자바 및 이클립스 다운로드(설치방법과 환경변수설정) (0) | 2019.06.28 |