저희가 코드를 입력하고 컴파일하여 콘솔 창에 출력하는 과정을 계속했었는데요.
지금까지는 콘솔 창은 출력만 되고 입력이 되지 않았습니다.
하지만 콘솔 창에 입력을 받을 수도 있는데요.
이걸 가능하게 하는 것이 바로 Scanner입니다.
Scanner를 사용하여 입력받을 수가 있는데 간단한 예제를 한번 볼까요?
Scanner sc = new Scanner(System.in);
System.out.println("숫자를 입력해주세요");
int a = sc.nextInt();
System.out.println("입력받은 a의 값 : " + a);
sc.close();
이런 형태로 사용됩니다.
Scanner sc = new Scanner(System.in);
먼저 이 부분은 Scanner를 사용할 거라고 알려준다고 생각하시면 됩니다.
그런데 이 형태 낯이 익으신가요?
Type 변수 = 값; 과 뭔가 비슷하지 않으세요??
어떻게 보면 Scanner라는 타입의 sc라는 변수로 선언하고 그 값이 new Scanner(System.in)이라는 것 같죠?
이 내용은 뒷부분에서 조금 더 자세하게 다뤄보겠습니다! 그리고 마지막에 sc를 끝내겠다는 표현으로 sc.close()를 입력해 줍니다.
이 코드에서는 close()를 안 쓰게 되면 워닝이 발생하는데요.
위의 코드에서는 굳이 안 쓰더라도 입력받은 후에 자동으로 명령을 끝내주기 때문에 에러는 뜨지 않습니다.
근데 문제는 여기서 이것을 입력하고 나면 Scanner 부분에 에러가 발생할 겁니다.
Scanner를 참조하고 싶지만 어떻게 참조해야 할지 컴퓨터가 잘 모른다는 의미인 거 같은데 패키지 안, 클래스 밖에 Import java.util.Scanner;라는 명령으로 임포트 해야 합니다.
Scanner라는 클래스는 아마 Java.util 안에 있는 것 같습니다.
자바가 제공하는 모든 api는 아래 링크에서 확인할 수 있습니다.
https://docs.oracle.com/en/java/javase/11/docs/api/index.html
int a = sc.nextInt();
자 이 부분은 sc라는 이름으로 입력을 받을 거라고 했지만 어떤 형태인지는 모르죠?
그래서 그 형태를 정해준다고 이해하시면 되겠는데요.
int 타입으로 a라는 변수를 선언했습니다.
근데 뒤에 nextInt는 뭐죠?
'입력의 다음 토큰을 int로 스캔합니다.'라고 합니다.
그렇다면 nextInt() 말고도 nextByte(), nextShort() 등 다양한 형태로 사용할 수 있습니다.
필요에 따라서 사용하시면 되겠습니다!
String 타입으로 입력을 받을 때는 next()와 nextLine()을 사용하게 되는데 차이점이 조금 있습니다.
next()는 공백을 포함할 수 없습니다.
공백을 입력할 경우 다음 토큰으로 넘어가게 됩니다.
nextLine()의 경우는 공백을 포함할 수 있습니다.
Scanner sc = new Scanner(System.in);
System.out.println("문자열을 입력해 주세요. (공백 포함 불가)");
String input = sc.next();
System.out.println("입력하신 문자열 : " + input);
String input2 = sc.next();
System.out.println("next test : " + input2);
String input3 = sc.next();
System.out.println("next test2 : " + input3);
String inputLine = sc.nextLine();
System.out.println("nextLine test : " + inputLine);
다음 코드를 입력하여 결과를 보시면 이해가 가실 겁니다!
제가 변수명 그대로 입력을 받아서 결과를 한번 보겠습니다.
이제 이해가 가시나요??
next()로 입력받았을 때는 공백을 입력받으면 enter처럼 결과를 받습니다.
그러면 Scanner로 입력받은 값끼리 연산도 가능할까요??
Scanner sc = new Scanner(System.in);
System.out.print("숫자를 입력해 주세요 : ");
int a = sc.nextInt();
System.out.println("입력받은 a의 값 : " + a);
System.out.print("숫자를 한번 더 입력해 주세요 : ");
int b = sc.nextInt();
System.out.println("입력받은 b의 값 : " + b);
int sum = a + b;
System.out.println("두 숫자의 합은 " + sum + "입니다.");
sc.close();
연산 됩니다!
'Java 관련 > Java' 카테고리의 다른 글
[Java] 얖은값 복사(Shallow copy), 깊은값 복사(Deep copy) (1) | 2021.10.19 |
---|---|
[Java] 배열(Array) (0) | 2021.10.18 |
[Java] for문, 별찍기 (0) | 2021.10.12 |
[Java] 제어문 - 반복문(for 문) (0) | 2021.10.11 |
[Java] 제어문 - 반복문(while 문) (0) | 2021.10.10 |