Line 10 : 공백 이전인 33까지 문자열은 받은 것을 알 수 있다.
Line 10 : 정수를 입력받기로 했기 때문에 오류가 나타나는 것을 볼 수 있다.
next() : 공백 이전의 문자열 받기
nextInt() : 공백 이전의 정수 받기
netxtDouble() : 공백 이전의 실수 받기
nextLine() : 문자열 전체 입력 받기 ( 입력값에 공백을 받을 여지가 있다면 이것을 선택)
nest().charAt(0) : 문자 하나 입력 받기
hasNextInt() : 만약 입력한 값이 int 형이 아닐 경우는 false를 리턴하고, int로 표현할 수 있는 형식의 숫자형인 경우는 true를 리턴한다. 따라서 위의 코드는 사용자가 입력을 할 때가지 실행을 기다렸다가 입력이 일어나면 문자열을 읽는다. (입력값 : 123 456 789 //출력 123 456 789 , 입력값 : 123 ddd 567 // 출력 123)
Scanner의 활용 예제 (문자열 자르기)
<이하 타블로그 발췌>
●Scanner사용시 주의점
이유는 모르겠으나 Scanner sc = new Scanner(System.in); 와 같이 sc참조변수로 하나의 Scanner인스턴스만 생성한뒤
sc.nextInt(), sc.nextLine() 이 두가지를 연달아 호출하면 에러가 뜬다.
하지만 sc.nextInt(), sc.next() 는 연달아 호출이 가능하다.
그리고 Scanner sc2 = new Scanner(System.in); 으로 Scanner 인스턴스를 하나 더 생성한뒤에
sc.nextInt(), sc2.nextLine()은 에러없이 호출된다.
하나의 Scanner클래스에 서로다른 자료형을 입력받아 사용하는 것은 불가능한가 보다.
Scanner클래스를 사용할 때 되도록이면 같은 자료형으로 입력받는것이 좋을듯
● Scanner사용해서 문자입력받아서 if,else 판단하기
1) equals사용
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a;
String b;
String str = "Y";
do{
System.out.print("N?");
a = sc.nextInt();
System.out.println("다시하시겠습니까?");
b = sc.next();
}while(b.equals(str));
}
}
출처: http://peulblog.tistory.com/11 [플블로그]
'Language > Java, Android' 카테고리의 다른 글
[TOMCAT] 서버 리부트시 자동 실행 (0) | 2018.02.02 |
---|---|
[스프링] 비밀번호 암호화 (bcrypt) (0) | 2018.01.31 |
함수 (0) | 2018.01.03 |
배열 (0) | 2018.01.02 |
[if] 간단한 로그인 구현 (0) | 2018.01.02 |