본문 바로가기

Language/Java, Android

Scanner 메소드 (대표적인 입력값받기)



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));  

}

}


2) charAt 사용
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a;
String b;
do{
System.out.print("N?");
a = Integer.parseInt(sc.nextLine());
System.out.println("다시하시겠습니까?");
b = sc.nextLine();
}while(b.charAt(0) == 'y');
}
}

str.charAt(0) == 'N' //charAt(N)은 N번째의 문자를 가져오라는 것임
sc.next() => 엔터를 먹고 들어옴. 이연산으로 받을 경우에는 나중에 계산용도로 사용하기 어려워짐
nextLine이나 nextInt같은경우에는 마지막에 엔터가 없음
a = integer.parseInt(문자) ==>문자를 숫자로 바꿈



출처: 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