오늘은 사용자가 직접 변수를 입력하는 방법에 대해 알아보겠습니다
System.in.read()
정수형을 입력받을 수 있습니다. 간단한 예제를 통해 입출력을 해봅시다. int와 char모두 정수를 변수에 저장하는데, char를 출력할 때는 숫자 대신 문자를 출력한다고 알고 있으면 됩니다. `System.in.read()`로 받아들인 값은 아스키코드의 십진수로 표현이 됩니다.
import java.io.IOException;
public class Chap02_inclass {
public static void main(String[] args) throws IOException{
int v1; //char v1으로 바꿔서도 해봅시다
v1=System.in.read();
System.out.println(v1);
}
}
`import java.io.IOException`과 `throws IOException`은 예외처리를 위한 구문입니다.
Scanner 사용하기
Scanner를 이용해서 입력을 받고 `System.out.println`으로 출력하는 예제입니다. `Scanner` 객체는 유니코드로 문자를 입력받습니다.
import java.util.Scanner;
public class chap02_pro01_ex12 {
public static void main(String[] args) {
int v1;
String v2;
double v3;
Scanner scan = new Scanner(System.in);
v1=scan.nextInt();
v2=scan.nextLine();
v3=scan.nextDouble();
System.out.println(v1);
System.out.println(v2);
System.out.println(v3);
}
}
`Ctrl+F11`로 빌드 후 처음 입력값에 `123`, 두번째 입력값에 `abc`를 넣으면 에러가 납니다. 우리가 입력해주는 값은 보통 `123`이 아니라 엔터까지 포함된 `123\n`인데, `nextInt`와 `nextDouble`은 `\n`을 무시하지만 `nextline`은 그것을 반영합니다. 그래서 첫 `123\n`을 입력할 때 남아있던 엔터 키가 입력되면서 `nextDouble`로 넘어가고, 여기 문자를 입력하는 것이라 못받게 됩니다. 해당 오류를 방지하려면 scan을 한번 써줘서 남아있는 `\n`을 없애주면 됩니다.
import java.util.Scanner;
public class chap02_pro01_ex12 {
public static void main(String[] args) {
int v1;
String v2;
double v3;
Scanner scan = new Scanner(System.in);
v1=scan.nextInt();
System.out.println("scan.next()로 입력받은 내용 : "+v1);
scan.nextLine();
v2=scan.nextLine();
System.out.println("scan.nextLine()로 입력받은 내용 : "+v1);
v3=scan.nextDouble();
System.out.println(v1);
System.out.println(v2);
System.out.println(v3);
scan.close();
}
}
덧붙이자면, `.charAt(0)`를 뒤에 붙이면 인덱싱을 할 수 있는데, 개행에는 인덱스가 붙지 않아 에러가 납니다.
'학교공부' 카테고리의 다른 글
[자료구조] 정렬의 속도 비교( 퀵 정렬, 삽입정렬, 병합 정렬) (1) | 2020.12.31 |
---|---|
유체역학 실험: 표면장력 (1) | 2020.09.12 |
[JAVA 기초] 변수와 자료형 (0) | 2020.09.08 |
[신호 및 시스템] Lecture 01 (0) | 2020.09.07 |
[JAVA 기초] JAVA 시작하기2 (4) | 2020.09.03 |
[JAVA 기초] 자바 시작하기 (2) | 2020.09.01 |