1. Scanner class
- java.util 에서 제공하는 class
- 주로 입력(System.in, 자바 표준 입력 스트림)을 받을 때 사용됨 ()
- 입력되는 키 값을 공백으로 구분하는 토큰 단위로 읽음 (공백 : '','\n','\t', ... )
- 사용자가 원하는 크기로 자르고 원하는 타입으로 읽을 수 있음
주요 method
- String next() : 다음 토큰(공백을 기준으로 판단)을 String type으로 return
- String nextLine() : 말 그대로 입력된 한 줄('\n' 제외)을 String type으로 return
- boolean hasNext() : 입력되는 토큰이 존재하면 true return, 입력이 없다면 무한정 기다림. ctrl+z로 입력 종료(false)
- int nextInt() : 다음 토큰(공백을 기준으로 판단)을 int type으로 return
- long nextLong() : 다음 토큰(공백을 기준으로 판단)을 int type으로 return
- float nextFloat() : 다음 토큰(공백을 기준으로 판단)을 float type으로 return
- double nextDouble(): 다음 토큰(공백을 기준으로 판단)을 double type으로 return
예시 (주로 사용하는 것들 위주로!)
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in); //여타 다른 class들과 마찬가지로 new를 통해 인스턴스 할당
int first = sc.nextInt(); // token을 기준으로 int type을 받아옴
float second = sc.nextFloat(); // token을 기준으로 float type을 받아옴
String third = sc.next(); // token을 기준으로 String type을 받아옴
String fourth = sc.nextLine(); // '\n'을 기준으로 String type을 받아옴
System.out.println("first: "+first);
System.out.println("second: "+second);
System.out.println("third: "+third);
System.out.println("fourth: "+fourth);
}
}
[Input]
2839 22.234
class Scanner
[Output]
first: 2839
second: 22.234
third: class
fourth: Scanner
%(주의) 여기서 nextLine() method는 만약 class치고 space 없이 그냥 엔터로 쳤다면 '\n'를 인식하고 반환값이 없어짐!
2. String.charAt(idx) method
- Scanner와 함께 자주 사용됨 (Scanner를 통해 char type을 바로 받을 수 없기에. nextChar()는 없음)
- String type이 아닌 char type을 사용해야 될 경우 이용
- 혹은 입력 받은 String에서 원하는 index의 글자를 사용하고 싶을 때 이용
- Scanner를 통해 입력받은 String type을 char type으로 변환해줄 수 있는 method
- 입력받은 String 에서 지정된 index의 글자를 char type으로 반환
예시
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in); //여타 다른 class들과 마찬가지로 new를 통해 인스턴스 할당
String str = sc.next(); // 일반적인 문자열
String to_char = sc.next(); // 그냥 문자만 받고 싶은 문자열
char str_c = str.charAt(3); // 3번째 index의 char 반환
char to_c = to_char.charAt(0); // 0번째, 즉 문자열의 그 문자 자체를 반환
System.out.println("String1: "+str);
System.out.println("Char1: "+str_c);
System.out.println("String2: "+to_char);
System.out.println("Char2: "+to_c);
}
}
[Input]
string c
[Output]
String1: string
Char1: i
String2: c
Char2: c
3. StringTokenizer class
- java.util 에서 제공하는 class
- String을 사용자가 지정한 구분자로 String을 쪼개주는 class
- Scanner와 같은 의미의 Token사용
- Scanner와 다르게 공백이 아닌 사용자가 직접 구분자 설정 가능
- 생성자를 통한 인스턴스 할당: new StringTokenizer( 문자열 , 구분자)
주요 method
- boolean hasMoreTokens() : 남은 토큰이 있는지 확인. 있으면 true반환, 없으면 false 반환
- String nextToken() : 구분자로 나누어진 다음 토큰을 String type으로 반환 (Scanner와 유사)
예시
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next(); // Scanner를 통해 문자열 받아줌
StringTokenizer st = new StringTokenizer(str, "."); // 구분자 "."를 기준으로 문자열을 나눔
while(st.hasMoreTokens()){ // 토큰이 남아있는 동안
System.out.println(st.nextToken()); // 해당 토큰을 출력
}
}
}
[Input]
2022.02.10
[Output]
2022
02
10
4. String.split(regex) method
- StringTokenizer class와 유사하게 문자열을 나눌 때 사용
- regex(정규표현식) 혹은 특정 문자를 기준으로 문자열을 분리하여 Array로 return
예시
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
String[] arr = str.split("\\."); // regex(정규표현식)이므로 .을 사용할 때는 \\사용 필수
for(int i = 0; i< arr.length; i++){
System.out.println(arr[i]);
}
}
}
[Input]
2022.02.10
[Output]
2022
02
10
%(주의) 출력이 같아보이지만 StringTokenizer의 nextToken()과는 다르게 String이 아닌 String Array로 반환하는 것 유의!
5. String.substring(strat idx, end idx) method
- 이 또한 문자열을 분리하고 싶을 때 혹은 잘라오고 싶을 때 자주 사용되는 method
- 시작 인덱스와 마지막 인덱스(실제로는 마지막 인덱스 - 1 까지 포함)를 지정하여 해당 문자열을 잘라와 String type으로 return
- 마지막 인덱스를 설정하지 않는다면 시작 인덱스부터 문자열의 끝까지 잘라옴
예시
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
String first = str.substring(0,4); // idx 0 ~ idx 3 String
String second = str.substring(5,7); // idx 5 ~ idx 7 String
String third = str.substring(8); // idx 8 ~ idx end String
System.out.println(first);
System.out.println(second);
System.out.println(third);
}
}
[Input]
2022.02.10
[Output]
2022
02
10
%(주의) substring은 위의 예시와 같이 문자열을 분리하는 데에 사용하기 보다는 문자열의 일부를 가져오는데에 주로 사용됨.
6. String.format() method
- 원하는 형식의 문자열로 String을 저장하는 방법
- 기존의 서식 지정자를 이용하여 원하는 형식으로 저장하고 싶을 때 이용
예시
public class Main {
public static void main(String[] args) {
String str = String.format("%.2f", 3.237771);
System.out.println(str);
}
}
[Output]
3.24
7. Integer.parseInt( string , radix) method
- 위에서 봤던 charAt()과 유사하게 String을 Integer(int) type으로 변환해주는 method
- radix(기수)를 적지 않으면 string을 10진법으로 해석하여 int type으로 반환
- radix를 적으면 string을 해당 진법으로 해석하여 그 진법을 다시 10진법으로 변환 후 int type으로 반환
예시
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //여타 다른 class들과 마찬가지로 new를 통해 인스턴스 할당
// 입력된 시간을 초로 변환하는 문제라고 가정
String str = sc.nextLine();
String[] time = str.split(":"); // 시간을 각각 시,분,초로분리
int hour = Integer.parseInt(time[0]); //String to Integer
int min = Integer.parseInt(time[1]); //String to Integer
int sec = Integer.parseInt(time[2]); //String to Integer
int total_sec = hour * 360 + min * 60 + sec;
System.out.println("총 시간: " + total_sec + "(sec)");
}
}
[Input]
23:53:23
[Output]
총 시간: 11483(sec)
'공부 > Java' 카테고리의 다른 글
Java, 자료구조별 주요 Class와 Method (0) | 2022.02.14 |
---|---|
Java 기초, Object Oriented Programming(OOP) [클래스와 객체] (0) | 2022.02.11 |