본문 바로가기

TIL ( Today I Learn ! )/JAVA

자바 기초) 문자 input을 받는 방법은?

1. 문자 1개 받기

- 이 코드를 실행하면 문자 여러개를 치고 엔터를 쳐도 System.in 은 한 글자만 받기 때문에 첫 번째 문자 1개만 char ch 에 들어간다.

package datastruct_1;
import java.io.*;

public class Binary_Search {

	public static void main(String[] args) throws IOException {
		InputStreamReader input = new InputStreamReader(System.in);
		System.out.print("입력: ");
		char ch = (char) input.read();
		System.out.print(ch);
	}
}

 


2. 문자열 1줄 받기

- 엔터키 입력하면 그 전까지 입력한 값이 String str 에 들어간다.

package datastruct_1;
import java.io.*;

public class Binary_Search {

	public static void main(String[] args) throws IOException {
		InputStreamReader input_char = new InputStreamReader(System.in);
		BufferedReader input_string = new BufferedReader(input_char);
		System.out.print("입력: ");
		String str = input_string.readLine();  // 문자열 입력받기
		System.out.print(str);
	}
}


3. 문자열을 int로 변환하여 변수에 넣기

- 정수인 문자열만 가능하다. 알파벳 등 정수가 아닌 문자는 불가능하다.

package datastruct_1;
import java.io.*;

public class Binary_Search {

	public static void main(String[] args) throws IOException {
		InputStreamReader input_char = new InputStreamReader(System.in);
		BufferedReader input_string = new BufferedReader(input_char);
		System.out.print("입력: ");
		String str = input_string.readLine();  // 문자열 입력받기
		System.out.println("문자: " + str);
		int intstr = Integer.parseInt(str);
		System.out.println("숫자: " + (intstr + 1));
	}
}


4. 문자열을 받아서 한 글자씩 분리해 배열에 넣기

- split은 공백까지 한 글자로 생각한다.

* 글자를 구분하는 구분자에 따라 값의 결과가 달라짐을 아래 예시를 통해 알아보자!

1) 구분자를 "&"로 했을 때

package datastruct_1;
import java.io.*;

public class Binary_Search {

	public static void main(String[] args) throws IOException {
		
		//문자열 입력받기
		InputStreamReader input_char = new InputStreamReader(System.in);
		BufferedReader input_string = new BufferedReader(input_char);
		System.out.print("입력: ");
		String str = input_string.readLine();  // 입력받는 부분
		
		//문자열의 각 문자를 쪼개서 배열에 넣기
		String[] array = str.split("&");
		System.out.print("출력: ");
		for(int i = 0; i < array.length; i++) 
			System.out.print(array[i] + "/ ");
		
	}
}

입력: 1&2& & & &3&4

출력: 1/ 2/ / / / 3/ 4/

- 구분자 & 에 따라 문자열이 구분되었다. 출력을 보면 공백 또한 하나의 문자로 취급되어 배열의 원소로 입력된 것을 볼 수 있다.( 빨간 부분)


2) 구분자를 " "로 했을 때

package datastruct_1;
import java.io.*;

public class Binary_Search {

	public static void main(String[] args) throws IOException {
		
		//문자열 입력받기
		InputStreamReader input_char = new InputStreamReader(System.in);
		BufferedReader input_string = new BufferedReader(input_char);
		System.out.print("입력: ");
		String str = input_string.readLine();  // 입력받는 부분
		
		//문자열의 각 문자를 쪼개서 배열에 넣기
		String[] array = str.split(" ");
		System.out.print("출력: ");
		for(int i = 0; i < array.length; i++) 
			System.out.print(array[i] + "/ ");
		
	}
}

package datastruct_1; import java.io.*; public class Binary_Search { public static void main(String[] args) throws IOException { //문자열 입력받기 InputStreamReader input_char = new InputStreamReader(System.in); BufferedReader input_string = new BufferedReader(input_char); System.out.print("입력: "); String str = input_string.readLine(); // 입력받는 부분 //문자열의 각 문자를 쪼개서 배열에 넣기 String[] array = str.split(" "); System.out.print("출력: "); for(int i = 0; i < array.length; i++) System.out.print(array[i] + "/ "); } }

<1번>

입력: 1 2 3 4

출력: 1/ 2/ 3/ 4/

<2번>

입력: 1 2 3 4

출력: 1/ 2/ 3/ / 4/

- 구분자를 공백(" ") 으로 할 경우 이는 구분자이기에 문자로 취급하지 않는다. 그래서 <1번>의 결과를 보면배열의 원소에는 공백이 있지 않다.

하지만 <2번>을 보면 공백을 여러번 입력 할 경우 구분자 다음에 나오는 공백은 문자로 취급한다. 그래서 3과 4 사이에 공백이 출력된 것이다.


3) 구분자를 ""로 했을 때

package datastruct_1;
import java.io.*;

public class Binary_Search {

	public static void main(String[] args) throws IOException {
		
		//문자열 입력받기
		InputStreamReader input_char = new InputStreamReader(System.in);
		BufferedReader input_string = new BufferedReader(input_char);
		System.out.print("입력: ");
		String str = input_string.readLine();  // 입력받는 부분
		
		//문자열의 각 문자를 쪼개서 배열에 넣기
		String[] array = str.split("");
		System.out.print("출력: ");
		for(int i = 0; i < array.length; i++) 
			System.out.print(array[i] + "/ ");
		
	}
}

입력: 1234 567

출력: 1/ 2/ 3/ 4/ / 5/ 6/ 7/

- 구분자가 없기에 모든 문자가 배열의 원소가 되었다.