지금까지 우리는 System.out.print로 값을 출력 및 확인을 했음. 즉, 콘솔 창을 통해 프로그램 내부에서 데이터가 어떻게 변화하는지 확인했음
- 출력 기능: 컴퓨터 내부의 데이터를 컴퓨터 외부로 보여주는 기능
- 출력 장치: 출력 기능을 담당하는 장치 (ex. 모니터, 스피커, 프린터 등)
- 입력 기능: 외부에서 컴퓨터 내부로 데이터를 입력할 수 있는 기능
- 입력 장치: (ex. 마우스, 키보드, 마이크 등)
키보드 데이터 입력받기1
- 콘솔: 현재 배우고 있는 프로그래밍 환경
- 콘솔은 대표적인 CLI(Command Line Interface) 개발 환경
- CLI 환경: 글자를 이용한 입출력 환경. 입출력 방식이 글자로 제한됨
- System.out.print 메소드는 자바를 활용한 CLI환경에서의 출력 메소드
- Scanner: 입력 관련 클래스
import java.io.*;
import java.util.Scanner; // Scanner 사용시 명시 필수!
class Main {
public static void main(String[] args) {
int iVal;
double dVal;
Scanner scanner = new Scanner(System.in);
System.out.print("정수를 입력해주세요 : ");
iVal = scanner.nextInt();
System.out.println("입력 정수 : " + iVal);
System.out.print("실수를 입력해주세요 : ");
dVal = scanner.nextDouble();
System.out.println("입력 실수 : " + dVal);
}
}
- 위 코드는 Scanner 클래스를 통해 정수와 실수를 입력받고, 입력받은 숫자를 다시 콘솔에 출력하는 프로그램
- Scanner 클래스를 사용하기 위해서는 import java.utill.Scanner; 꼭 명시
- 9번째 줄에서 scanner 객체에 메모리를 할당. 이렇게 scanner 객체에 메모리가 할당되고 나면 nextInt() 메소드 혹은 nextDouble() 메소드 등을 사용해서 사용자가 입력하는 숫자를 본인이 원하는 변수에 저장할 수 있음
- 12번째 줄에서 scaneer.nextInt() 메소드로 iVal이라는 int형 변수에 값을 대입하고 있음
즉, nextInt() 를 사용하게 되면 사용자로부터 데이터를 입력받을 수 있음(단, 정수형이어야 함)
키보드 데이터 입력받기2
- 데이터 입력받을 때 Scanner만 사용하진 않음.
- 이번에는 BufferedReader라는 클래스를 사용하여 데이터를 입력하는 방법 쓸거임
- “데이터를 사용자로부터 입력받는다.” 라는 기본 전제조건은 Scanner와 동일하지만 작동 방식은 조금 다름
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
String sVal;
// BufferedReader 초기화
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("문자열을 입력해주세요 : ");
sVal = br.readLine();
System.out.println("입력 문자열 : " + sVal);
br.close();
}
}
- Scanner와 달리 추가 import를 해줄 필요가 없음. 그대신 main 메소드 뒤에 throws Exception 을 덧붙여야 함
- 9번째 줄에서 BufferedReader의 객체인 br을 초기화. InputStreamReader는 데이터 입력 받는 방식을 정해주는 클래스
- 12번째 줄에 있는 sVal = br.readLine(); 에서 데이터를 입력 받음. readLine() 은 입력되는 줄 전체를 string 형태로 반환해주는 메소드 → string 형태로 데이터를 입력받기 떄문에 만약 숫자를 받고 싶다면 먼저 string으로 데이터를 입력받은 뒤 원하는 자료형으로 변환하는 작업 필요
- BufferedReader의 사용이 끝났다면 14번째 줄처럼 BufferReader 클래스의 close() 메소드를 통해 BufferedReader 객체를 종료시켜야 함
데이터를 파일로 출력하기
- 이제까지 메소드를 이용한 콘솔 출력하는 방법에 대해 알아봄
- 만약 출력한 데이터를 프로그램이 종료한 후에도 사용하고 싶다면 데이터를 파일 형태로 저장하여 다운로드하면 됨
- 이번에는 콘솔 출력이 아닌, 파일 형태로 데이터를 출력하는 방법을 학습
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("data/test.txt")));
String str = "Hello Goorm Java Class!";
bw.write(str);
bw.close();
}
}
- 6번째 줄에서 파일이 생성됨. 이 한 줄의 코드에서는 3가지 클래스(BufferedWriter, FileWriter, File)가 사용 됨
- 앞에서 배운 BufferedReader와 비슷한 구조지만 이는 컴퓨터가 데이터를 읽을 때 사용하는 클래스이고, BufferWriter는 컴퓨터가 데이터를 출력할 때 사용하는 클래스
- 파일에 데이터를 작성 해야 하므로 InputStreamReader 대신 FileWriter를 사용함
- FileWriter의 파라미터로 사용되고 있는 File 클래스는 사용할 파일의 주소를 매개변수로 입력받아 해당 파일의 정보를 가지고 있는 클래스임
- 위 세 개의 클래스를 조합하면 파일에 데이터를 쓸 수 있도록 준비된 것임
- 9번째 줄에 있는 bw.write(str) 코드가 실제로 데이터를 파일에 Writing하는 소스코드임
- write 메소드의 파라미터는 String 형태만 가능
- 11번째 줄에 있는 bw.close(); 코드는 파일 쓰기가 모두 끝난 후 콜해야하는 BufferedWriter의 메소드 → 콜하지 않을 시 데이터가 정상적으로 저장되지 않음
데이터를 파일에서 입력받기
- 파일에서부터 데이터를 읽어오는 방법
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new FileReader(new File("data/test.txt")));
String str;
str = br.readLine();
br.close();
}
}
- BufferedReader를 활용한 키보드 데이터를 입력받는 방법과 유사하지만 입력받는 위치가 키보드에서 파일로 바뀜
- InputStreamReader → FileReader
- System.in → File
String → 기본 자료형 형변환
- readLine() 메소드는 String 형태를 반환함integral 계열 및 floating 계열은 모두 위와 같은 방법으로 String에서 각 타입으로 자료형 변환할 수 있음
- character의 경우 String이 character의 모임이기 때문에 String 클래스의 charAt(int p) 메소드로 p번째에 있는 character 값을 리턴 받을 수 있음.
import java.io.*;
class Main {
public static void main(String[] args) {
String szVal = "3.1";
double dVal = Double.valueOf(szVal);
szVal = "41";
int iVal = Integer.valueOf(szVal);
}
}
String 비교
- equals : String 변수들 사이의 데이터가 동일한지 확인하는 메소드
- 비교하고자 하는 string이 동일한 데이터를 가지고 있을 시 true를 반환, 아니면 false 반환
import java.io.*;
class Main {
public static void main(String[] args) {
String szVal = "Goorm";
if(szVal.equals("Gooorm") == true) {
System.out.println("SAME!!");
} else {
System.out.println("Different!!");
}
}
}
String 길이
- length() : String 변수의 전체 길이를 가져오는 메소드
import java.io.*;
class Main {
public static void main(String[] args) {
String szVal = "Goorm";
int length = szVal.length();
System.out.println("Length = " + length);
for(int j = 0 ; j < szVal.length() ; j++) {
System.out.println(szVal.charAt(j));
}
}
}
Split
- Split : 해당하는 글자(혹은 정규표현식)를 통해 String을 잘라주는 메소드
import java.io.*;
class Main {
public static void main(String[] args) {
String szVal = "Goorm/Java/Class";
String [] strArr;
strArr = szVal.split("/");
for(int j = 0 ; j < strArr.length ; j++) {
System.out.println(strArr[j]);
}
}
}
// > Goorm
// Java
// Class
- 9번째 줄 szVal.split("/"); : szVal의 내용을 “/”를 기준으로 조각내어 String 배열에 저장
'바로 실행해보면서 배우는 java'를 학습하며 정리한 문서
'Java' 카테고리의 다른 글
Java 문법(9) - 상속, 추상화 (0) | 2022.02.08 |
---|---|
Java 문법(8) - 이차원배열, 클래스배열 (0) | 2022.02.08 |
Java 문법(6) - 클래스와 객체, 접근제한자 (0) | 2022.02.07 |
Java 문법(5) - 배열 기초, String (0) | 2022.02.06 |
Java 문법(4) - 메소드 (0) | 2022.02.06 |