본문 바로가기

Programming Language/JAVA

[JAVA/기초] java입출력(read & scanner 입력문) + 퀴즈문제

 

 

 

 

● 예외전가의 필요성
- 프로그램 안정성을 중시하는 자바언어의 특성상, 모든 입출력에 대해 발생할 수 있는 예외적인 상황을 대비해야 한다.
- 지금까지 사용해왔던 출력 메소드는 모두 내부적으로 예외처리가 되어있었지만, 대부분 그렇지 않은것도 많다.

 



● 예외전가 방법
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("===============");
	}
}