| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 프록시 패턴
- 코드카타
- 트러블슈팅
- 배치
- 이펙티브 자바
- 스케줄러
- 디자인 패턴
- 스프링
- redis
- lv1
- Effective Java
- 김영한
- 프로그래머스
- spring boot
- Spring
- Spring Batch
- 백엔드
- DB
- 성능 개선
- 빌더 패턴
- 추상클래스
- Til
- 템플릿 메서드 패턴
- 자바
- 스프링 배치
- 로드밸런서
- GoF 23
- java
- 계산기
- 토스
- Today
- Total
김코딩
자바 - Scanner 본문
Scanner
System.out 을 통해서 출력을 했듯이, System.in 을 통해서 사용자의 입력을 받을 수 있다. 그런데 자바가 제공하는 System.in 을 통해서 사용자 입력을 받으려면 여러 과정을 거쳐야해서 복잡하고 어렵다. 자바는 이런 문제를 해결하기 위해 Scanner 라는 클래스를 제공한다. 이 클래스를 사용하면 사용자 입력을 매우 편리 하게 받을 수 있다.
예제 1 (scanner 예제)
package scanner;
import java.util.Scanner;
public class Scanner1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("문자열을 입력하세요:");
String str = scanner.nextLine();
System.out.println("입력한 문자열 : " + str);
System.out.print("정수를 입력하세요: ");
int intValue = scanner.nextInt();
System.out.println("입력한 정수: " + intValue);
System.out.print("실수를 입력하세요: ");
double doubleValue = scanner.nextDouble();
System.out.println("입력한 실수: " + doubleValue);
}
}

Scanner scanner = new Scanner(System.in); 이 코드는 객체와 클래스를 배워야 정확히 이해할 수 있다.
지금은 Scanner 의 기능을 사용하기 위해 new 를 사용해서 Scanner 를 만든다 정도로 이해하면 된다.
Scanner 는 System.in 을 사용해서 사용 자의 입력을 편리하게 받도록 도와준다.
- Scanner scanner 코드는 scanner 변수를 선언하는 것이다.
이제부터 scanner 변수를 통해서 scanner 를 사용할 수 있다.
- scanner.nextLine() 엔터( \n )을 입력할 때 까지 문자를 가져온다.
- scanner.nextInt() 입력을 int 형으로 가져온다. 정수 입력에 사용한다.
- scanner.nextDouble() 입력을 double 형으로 가져온다. 실수 입력에 사용한다.
예제 2 (숫자를 입력하여 두 숫자의 합을 구하는 예제)
package scanner;
import java.util.Scanner;
public class Scanner2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("첫 번째 숫자를 입력하세요:");
int num1 = scanner.nextInt();
System.out.print("두 번째 숫자를 입력하세요:");
int num2 = scanner.nextInt();
int sum = num1 + num2;
System.out.println("두 숫자의 합 : " + sum);
}
}

예제 3 (숫자를 두개 입력받아 두 숫자 중 큰 숫자를 출력하는 예제)
package scanner;
import java.util.Scanner;
public class Scanner3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("첫 번째 숫자를 입력하세요: ");
int num1 = scanner.nextInt();
System.out.print("두 번째 숫자를 입력하세요: ");
int num2 = scanner.nextInt();
if (num1 > num2) {
System.out.println("더 큰 숫자: " + num1);
}else if (num2 > num1){
System.out.println("더 큰 숫자: " + num2);
}else {
System.out.println("두 숫자는 같습니다.");
}
}
}

예제 4 (문자열을 입력받아 exit를 입력할때까지 입력된 문자열을 출력하는 예제)
package scanner;
import java.util.Scanner;
public class ScannerWhile1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(true){
System.out.print("문자열을 입력하세요(exit: 종료) :");
String str = scanner.nextLine();
if(str.equals("exit")){
break;
}
System.out.println("입력한 문자열: " + str);
}
System.out.println("프로그램을 종료합니다.");
}
}

예제 5 (첫 번째 숫자와 두 번째 숫자 모두 0 입력시 프로그램을 종료하는 예제)
package scanner;
import java.util.Scanner;
public class ScannerWhile2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("첫 번째 숫자와 두 번째 숫자 모두 0을 입력 시 프로그램을 종료합니다.");
while(true){
System.out.print("첫 번째 숫자를 입력하세요: ");
int num1 = scanner.nextInt();
System.out.print("두 번째 숫자를 입력하세요: ");
int num2 = scanner.nextInt();
if(num1 == 0 && num2 == 0){
System.out.println("프로그램 종료");
break;
}
int sum = num1 + num2;
System.out.println("두 숫자의 합: " + sum);
}
}
}

예제 6 (0을 입력할때까지 정수를 입력하기 - 종료 시 지금까지 입력한 정수의 합 구하기)
package scanner;
import java.util.Scanner;
public class ScannerWhile3 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int sum = 0;
while(true){
System.out.print("정수를 입력하세요(0을 입력하면 종료): ");
int num = input.nextInt();
if (num == 0) {
System.out.println("프로그램을 종료합니다.");
break;
}
sum += num;
}
System.out.println("입력한 모든 정수의 합: " + sum);
}
}
