입력과 출력
▶️ 입력(Input)과 출력(Output)을 줄여 IO라는 용어를 자주 사용
앱이 시작할 때 데이터를 입력
package sujin.io;
public class InputDemo {
public static void main(String[] args) {
System.out.println(args.length);
}
}
▶️ public static void main(String[] args) : args라는 이름을 가진 변수가 문자열을 담을 수 있는 배열임을 의미
→ main 함수의 parameter(매개변수)가 string[] args임
▶️ void 때문에 main은 입력값은 있지만 출력 값은 없음
▶️ .length : 배열의 길이를 의미함
package sujin.io;
class InputForeachDemo {
public static void main(String[] args) {
for(String e : args) {
System.out.println(e);
}
}
}
console 창에서 결과 확인하기
→ 자세한 방법은 조건문 참고
▶️ Program arguments에 입력한 값 그대로 출력되는 모습을 볼 수 있음
→ main 메소드 안의 parameter(매개 변수)가 for-each 구문에 담겨 있음
= 변수에 담긴 값을 하나 하나 개별로 꺼내서 담으라는 내용
▶️ args라는 변수에 one, two, three 각각을 담았고 이를 e라는 변수에 옮기라는 for-each구문을 통해 args 안에 있는 인자값을 e에다가 옮김
→ 최종 System.out.println(e); 입력시 화면에 one, two, three 모두 다 출력됨
❌ for-each 구문을 사용하기 위해서는 : (콜론) 사용 주의
앱이 실행중에 데이터를 입력
package sujin.io;
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
System.out.println(i*1000);
sc.close();
}
}
▶️ import java.util.Scanner : java.util 패키지에 들어있는 Scanner라는 logic을 사용하기 위해서 새로 load 해야함
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
System.out.println(i*1000);
sc.close();
}
▶️ System.in : 사용자가 입력한 값
→ 사용자가 입력한 값을 scan하는 객체 새로 생성
▶️ 사용자가 console 창에 값을 입력하면 그 값을 scan하여 i 변수에 집어 넣음
▶️ System.out.println(i*1000) : 사용자가 입력한 값에 1000을 곱한 결과값을 출력함
❌ 단점 → 사용자가 값을 입력할 때마다 프로그램을 종료 시키고 다시 켜야 함
프로그램 종료 없이 계속해서 작동하는 프로그램 코드를 작성하려면?
→ 반복문 활용
package sujin.io;
import java.util.Scanner;
public class Scanner2Demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt()) {
System.out.println(sc.nextInt()*1000);
}
sc.close();
}
}
while(sc.hasNextInt()) {
System.out.println(sc.nextInt()*1000);
}
▶️ hasNextInt 메소드 때문에 사용자가 입력한 값이 정수값인 경우 true이기 때문에 while 반복문이 작동되지만 false인 경우에는 while 반복문이 종료되고 sc.close()로 마무리됨
▶️ 사용자가 입력한 값이 정수가 아니기 때문에 while 반복문이 종료되고 프로그램이 종료된 모습
여러 형태의 입출력
→ run configuration을 통한 입력과 console에 직접 입력하기 외에도 파일(ex. 텍스트 파일)을 통해 입출력 하기
▶️ src와 bin 폴더가 속한 파일에 out.txt 파일을 만든 후 아무런 정수값 하나를 입력
package sujin.io;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Scanner3Demo {
public static void main(String[] args) {
try {
File file = new File("out.txt");
Scanner sc = new Scanner(file);
while(sc.hasNextInt()) {
System.out.println(sc.nextInt()*1000);
}
sc.close();
} catch(FileNotFoundException e) {
e.printStackTrace();
}
}
}
❌ 결과 출력으로는 out.txt 파일에 적어둔 1234에 1000을 곱한 1234000가 출력되어야 하지만 오류가 발생한 모습
▶️ 해결하기 위해서 java.io.File;과 java.io.FileNotFoundException; 라이브러리를 import 했지만 동일한 오류 발생
▶️ out 텍스트 파일을 src 폴더로 이동하니 해결되었음
▶️ 텍스트 파일 명은 위처럼 수정하지 않고 out.txt 그대로 두었음
→ out으로 이름 변경하면 오류 발생
▶️ 텍스트 파일을 불러오는 과정에서 절대경로를 이용해 File file = new File("out.txt") 대신 new File(“C:\\폴더 이름\\out.txt").getAbsolutePath()로 변경할 수 있음
public static void main(String[] args) {
try {
File file = new File("out.txt");
Scanner sc = new Scanner(file);
▶️ file이라는 변수는 new File이라는 객체 생성
▶️ 파일 지정 → out.text라는 이름을 가진 파일을 import 할 수 있도록 scanner에 지시함
▶️ 직접 사용자가 입력할 때는 Scanner sc = new Scanner(System.in)이라고 작성했지만 System.in 영역에 file을 작성함으로써 스캐너가 file이라는 변수를 찾을 수 있도록 함
catch(FileNotFoundException e) {
e.printStackTrace();
}
▶️ catch는 예외를 의미함
→ 만약 out.txt 파일을 찾을 수 없는 경우 FileNotFoundException이라는 결과를 출력하도록 함
필요한 라이브러리 전부 import 하기
→ ctrl+shift+O
→ 총 몇개의 새로운 라이브러리를 import 했는지 알려줌
GUI(Graphical User Interface)
사용자가 컴퓨터와 정보를 교환할 때, 그래픽을 통해 작업할 수 있는 환경
→ 이미지처럼 그림체를 통해 입력 가능하게 함
▶️ 텍스트 언어로 작성하는 것은 CLI
Java Tutorials Code Sample - DialogDemo.java : 코드를 다운받아 실행하면 다음과 같은 결과가 나옴
→ 이를 실행하기 위해서는 Java Web S tart 다운 필요
'Language > Java' 카테고리의 다른 글
[ Java ] 클래스와 인스턴스 그리고 객체지향 (0) | 2021.09.03 |
---|---|
[ Java ] 메소드 (0) | 2021.09.03 |
[ Java ] 배열 (0) | 2021.09.03 |
[ Java ] 반복문 (0) | 2021.09.03 |
[ Java ] 논리 연산자 (0) | 2021.09.03 |