반응형
입력값 처리
python에서 sys
가 있다면 java에서는 import java.util.Scanner
가 있다.
이때 Scanncer는 InputStream을 생성자로 입력받는데, 입력하는 곳이 어디냐에 따라 그 값을 넣어주면 된다.
[1] 입력 방식의 차이
1-1) 키보드에서 입력받기 : System.in
키보드에서의 입력을 받으려면 System.in
의 InputStream 을 넘겨주면 된다.
import java.util.Scanner
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
}
}
1-2) 변수에서 입력받기 : 변수명
키보드에서의 입력을 받으려면 System.in
의 InputStream 을 넘겨주면 된다.
import java.util.Scanner
public class Main {
public static void main(String[] args) {
String ex = "2 apple";
Scanner sc = new Scanner(ex);
}
}
1-3) 외부 파일에서 입력받기 : new File()
import java.util.Scanner
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(new File({파일명}));
}
}
2) 타입에 따라 입력받기
파이썬 처럼 입력받을때 타입을 지정할 수 있다.
import java.util.Scanner
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// int 형으로 입력받기 : Short(), Long(), Double(), Float() 도 가능하다.
int input_int = sc.nextInt();
// 문자로 입력받기
String input_str = sc.next();
// 문자를 '줄' 단위로 입력받기
String input_str = sc.nextLine();
}
}
이때 next() 와 nextInt() 는 모두 기본적으로 공백을 구분자 로 하여 한개 단어씩만 입력받는다.
public class Main {
public static void main(String[] args) {
String ex = "2 apple";
Scanner sc = new Scanner(ex);
int input_int = sc.nextInt(); // 2
String input_str = sc.next(); // apple
System.out.println(input_int+input_srt);
}
}
>>> 2apple
3) 구분자로 입력받기
3-1) 한줄로 입력
한줄에 구분자를 두고 여러값을 입력받는 경우도 있다.
3
1 6 7
이런식의 입력예제는 알고리즘 문제에서 많이 볼수 있었다. nextLine()
을 통해 개행문자로 구분되기 전 한줄의 값을 모두 읽어올 수 있다.
public class Main {
public static void main(String[] args) {
String ex = "2 apple";
Scanner sc = new Scanner(ex);
String input_line = sc.nextLine();
System.out.println(input_line);
}
}
>>> 2 apple
3-2) 입력받은 문자열을 공백을 기준으로 리스트로 담기
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("공백으로 구분된 문자열을 입력하세요:");
String input = scanner.nextLine();
// 입력된 문자열을 공백으로 분리하여 배열로 저장
String[] tokens = input.split("\\s+");
}
}
이때 배열상태인 tokens를 바로 출력하면 배열이 저장된 데이터의 주소값 이 출력된다. 이를 문자로 출력하기 위해선 Arrays.toString()
메소드를 이용해 배열을 문자열로 변환한 후에 출력해야 한다.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("공백으로 구분된 문자열을 입력하세요:");
String input = scanner.nextLine();
// 입력된 문자열을 공백으로 분리하여 배열로 저장
String[] tokens = input.split("\\s+");
// 배열을 리스트로 변환
List<String> list = Arrays.asList(tokens);
// 리스트 출력 (테스트용)
System.out.println("리스트: " + list);
}
}
3-3) 입력받은 한줄을 숫자형 리스트로 만들기
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("공백으로 구분된 숫자를 입력하세요:");
List<Integer> numbers = new ArrayList<>();
while (scanner.hasNextInt()) {
numbers.add(scanner.nextInt());
}
// 숫자 리스트 출력
System.out.println("입력된 숫자: " + numbers);
}
}
이때 nextLine()
처럼 한줄을 한번에 읽고, 그 후에 처리하는 방법은 아래와 같다.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("공백으로 구분된 숫자를 한 줄에 입력하세요:");
String input = scanner.nextLine();
// 입력된 문자열을 공백으로 분리하여 숫자로 변환하여 리스트에 저장
List<Integer> numbers = new ArrayList<>();
String[] tokens = input.split("\\s+");
for (String token : tokens) {
numbers.add(Integer.parseInt(token));
}
// 숫자 리스트 출력
System.out.println("입력된 숫자: " + numbers);
}
}
반응형
'풀이로그' 카테고리의 다른 글
[백준] 2792 Python | 15810 Python : 이분탐색법 (0) | 2024.03.03 |
---|---|
[알고리즘] 백준 | 배열 돌리기 Python (16926, 16927) (2) | 2024.02.14 |
[알고리즘] Softeer | GBC 풀이 (python) (1) | 2024.02.02 |
[자료구조] 이항계수 + DFS & python의 itertools 라이브러리 (0) | 2024.01.29 |
[자료구조] 큐 (Queue)와 데크 (Deque) (1) | 2024.01.29 |