System.in.read( )
- 문자를 하나씩만 가져올 수 있다.
- 입력받은 값 중 첫번째 문자를 아스키코드 값을 기준으로 십진수로 표현해준다.
- 정수형(int)으로 입력한 값을 그대로 가져올 때는 아스키 코드 번호에 48를 빼주면 된다.
- 영문대문자 문자형을 소문자로 출력하고 싶으면 아스키 코드 번호에 32를 더해주면 된다.
- 문자형(char)로 가져올 때는 아스키 코드를 캐스팅으로 형변환해면 된다.
- 예외처리를 해주어야한다.
예제1) 위 특징들 예제로 살펴보기
import java.io.IOException;
// import java.io.IOException;와 throws IOExceptionsms는 예외처리를 위한 구문
public class Ex2 {
public static void main(String[] args) throws IOException {
int data1, data2, data3, data4, data5;
System.out.print("첫번째 데이터 입력 : ");
data1 = System.in.read();
System.out.println("첫번째 데이터 출력 : " + data1);
System.in.read();System.in.read(); // 문자 하나만 입력받기 위해 임시작성함.
System.out.print("두번째 데이터 입력 : ");
data2 = System.in.read();
System.out.println("두번째 데이터 출력 : " + (char)data2);
System.in.read();System.in.read();
System.out.print("세번째 데이터 입력 : ");
data3 = System.in.read();
System.out.println("세번째 데이터 출력 : " + (int)data3);
System.in.read();System.in.read();
System.out.print("네번째 데이터 입력 : ");
data4 = System.in.read();
System.out.println("네번째 데이터 출력 : " + (data4-48));
System.in.read();System.in.read();
System.out.print("다섯번째 데이터 입력 : ");
data5 = System.in.read();
System.out.println("다섯번째 데이터 출력 : " + (char)(data5+32));
}
}
Scanner 클래스
Scanner클래스는 자바에서 배우는 기초적인 입력클래스로 객체를 생성 후 사용해야하며, 아래와 같은 여러 메서드들이 있다.
이 메서드들을 사용하면 원하는 자료형으로 변환하는 수고는 하지 않아도 된다.
input.next();
input.nextLine(); *해당 메서드는 줄바꿈(enter키)만 입력 끝값으로 인식하지만,
이 외에 메서드는 띄어쓰기(space키)도 입력 끝으로 인식하므로 주의해야한다.
input.nextInt();
input.nextDouble();
input.nextByte();
input.nextShort();
input.nextLong();
input.nextBoolean();
input.nextFloat();
예제1) input.next() 와 input.nextLine() 메서드의 차이
import java.util.Scanner; // Scanner클래스를 사용하기 위해 추가
public class Ex3 {
public static void main(String[] args) {
// Scanner : 자료형, 참조자료형
// input : 변수이름, 참조변수, 담기는 값은 참조(주소)값
// new : 메모리에 공간 확보 후 Scanner 클래스의 내용을 담음.
Scanner input;
input = new Scanner(System.in); // Scanner클래스 객체 생성
System.out.println("참조 값 : " + input);
System.out.print("데이터 입력 : ");
String data = input.next();
System.out.println("입력 받은 데이터 : " + data);
input.nextLine(); // next 먼저 사용하게되면 공백을 인식하여 출력오류 생기므로 한번더 해줘야한다.
System.out.print("데이터 입력 : ");
data = input.nextLine();
System.out.println("입력 받은 데이터 : " + data);
input.close();
/*
문자열 입력 받을 때 사용하는 메서드
input.next(); --> 공백(space키)과 줄바꿈(enter키)을 입력 문자열의 끝으로 사용
input.nextLine(); --> 줄바꿈만 입력 문자열의 끝으로 사용
*/
}
}
예제2) Scanner의 여러 메서드 사용
import java.util.Scanner;
public class Ex4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력 : ");
int data = sc.nextInt();
System.out.println("입력받은 데이터 : " + data );
System.out.print("체중 : ");
double weight = sc.nextDouble();
System.out.print("키 : ");
float height = sc.nextFloat();
System.out.println("체중 : " + weight);
System.out.println("키 : " + height);
sc.close(); // Scanner 객체 닫기
}
}
예제3) n번째 데이터 값 사용하는 메서드 : charAt(n-1) 사용해보기
import java.util.Scanner;
public class Ex6 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("문자 입력 : ");
String data = sc.next();
char charData1 = data.charAt(0);
char charData2 = data.charAt(4);
System.out.println("입력 받은 첫번째 문자 출력 : " + charData1);
System.out.println("입력 받은 다섯번째 문자 출력 : " + charData2);
sc.close();
}
}
예제4) 세과목 점수 입력하여 합계구하기
import java.util.Scanner;
public class Quiz3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("당신의 이름은 무엇입니까? ");
String name = sc.nextLine();
System.out.print(name + " 님의 국어 점수 : ");
int subject1 = sc.nextInt();
System.out.print(name + " 님의 영어 점수 : ");
int subject2 = sc.nextInt();
System.out.print(name + " 님의 수학 점수 : ");
int subject3 = sc.nextInt();
System.out.println();
System.out.println("=====================");
System.out.println("이름 : " + name);
System.out.println("=====================");
System.out.println("국어 점수 : " + subject1);
System.out.println("영어 점수 : " + subject2);
System.out.println("수학 점수 : " + subject3);
System.out.println("=====================");
System.out.println("합계 : " + (subject1+subject2+subject3));
System.out.println("=====================");
sc.close();
}
}
'Programming > Java' 카테고리의 다른 글
[JAVA] System.out 출력 클래스 print, println, printf() (0) | 2022.10.03 |
---|---|
[JAVA] 메인 메서드, Escape문자, 자바규칙(+카멜케이스) (0) | 2022.09.27 |
[JAVA] 자바 개발환경 세팅하기(Java, Eclipse) (0) | 2022.09.22 |
[JAVA] 자바를 시작하며..(JVM, JDK, JRE) (0) | 2022.09.19 |
[JAVA] 람다 표현식(Lambda Expressions) (0) | 2022.08.19 |