728x90
자바에서 Scanner 클래스는 입력 받을 직접 입력을 받기 위한 클래스입니다.
이 클래스는 데이터를 직접 입력받아 테스트를 하고자할 때 사용할 수 있습니다.
1. 문자열 타입
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str1 = sc.next(); // next는 스페이스를 비롯한 공백 단위로 끊어서 문자열을 받음
String str2 = sc.next();
System.out.println("str1: " + str1);
System.out.println("str2: " + str2);
String str3 = sc.nextLine(); //nextLine은 줄바꿈 단위로 끊어서 문자열을 받음 -> 주로 사용
System.out.println("str3: " + str3);
System.out.println("단어를 입력해주세요.");
// 입력값이 어떻게 반환되는지 아래 코드를 통해 확인
while (sc.hasNext()) {
String nextWord = sc.next();
if (nextWord.equalsIgnoreCase("quit")) break;
System.out.println("입력값: " + nextWord);
}
System.out.println("문장을 입력해주세요.");
while (sc.hasNextLine()) {
String nextSentence = sc.nextLine();
if (nextSentence.equalsIgnoreCase("quit")) break;
System.out.println("입력값: " + nextSentence);
}
// 스캐너의 사용이 끝나면 OS자원을 반환
// 파일 등으로부터 읽어오는데 사용시 필수
sc.close();
}
}
2. 문자열 외 타입
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//다른 타입의 자료를 넣으면 오류 발생
boolean bool = sc.nextBoolean();
System.out.println("bool: " + bool);
int intNum = sc.nextInt();
System.out.println("intNum: " + intNum);
double dblNum = sc.nextDouble();
System.out.println("dblNum: " + dblNum);
System.out.println("정수를 입력해주세요.");
while (sc.hasNextInt()) { //hasNext타입은 다음 입력값의 타입을 확인하여 일치하면 true 일치하지 않으면 false 반환
System.out.println("입력값: " + sc.nextInt());
}
sc.close();
}
}
3. 배열에 넣어서 사용
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String [] strInputs = new String [5]; // 요소가 5개인 문자열 배열
for (int i = 0; i < strInputs.length; i++) {
strInputs[i] = sc.nextLine();
}
// 요소 5개를 입력받으면 반복문 종료
sc.close();
for (String str : strInputs) {
System.out.println(str); // 5개 요소를 출력
}
}
}
4. 응용
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()) {
int repeatCount = sc.nextInt();
// repeatCount 변수에 담은 이유 -> for문의 범위에 sc.next를 담으면 범위가 계속 변경되기 때문에 의도하지 않은 결과가 나타남
for (int i = 0; i < repeatCount; i++) {
System.out.print("박박 ");
}
System.out.println();
}
sc.close();
}
}
'JAVA Programming > Java' 카테고리의 다른 글
[JAVA] 좋은 객체지향 설계의 5가지 원칙(SOLID) (0) | 2024.12.12 |
---|---|
[JAVA] 메소드 (0) | 2024.07.10 |
[JAVA] 제어문 (0) | 2024.07.09 |
[JAVA] 타입 추론 (0) | 2024.07.09 |
[JAVA] 배열 (0) | 2024.07.09 |