사용자의 키보드, 마우스, 터치를 입력으로 받아들이고 처리 결과를 모니터나 스피커로 출력할 수 있다. 이번에는 main메소드의 String[] args
의 의미에 대해 알아보자.
main 메소드를 구현할 때 ()
안의 String[] args
는 입력 값의 파라미터로 동작한다. 다시말해 이는 매개변수인 것이다. 매개변수는 메소두가 호출될 때 전달된 입력값을 메소드 내부로 전달하는 역할을 하는 변수이다. 이 변수의 데이터형은 String[]
이며 이는 문자열을 담고 있는 배열이다.
Java에서 기본적으로 제공하는 라이브러리 중 Scanner를 이용하면 사용자의 입력값을 받을 수 있다. Scanner 라이브러리를 이용하여 사용자에게 입력 값을 받은 후, (입력값x3)을 출력해주는 프로그램을 작성해보자.
import java.util.Scanner;
public class inOut {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
System.out.println("입력 값 * 3 = "+(i*3));
sc.close();
}
}
sc.nextInt()
가 실행되면 자바는 사용자의 입력이 있을 때까지 변수 i에 값을 할당하지 않고 대기한다. 키보드를 이용해 값을 입력하면 그제서야 연산이 이루어지고 화면에 결과값이 출력된다.
이번에는 Scanner를 통해 숫자 이외의 것을 입력받으면 while문을 빠져나오는 프로그램을 작성해보자.
import java.util.Scanner;
public class inOut2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("숫자를 입력하면 *3의 값이 출력됩니다.");
while(sc.hasNextInt()) {
System.out.println("연산결과 : " + sc.nextInt()*3);
}
System.out.println("숫자 이외의 것을 입력하여 while문이 종료됩니다.");
sc.close();
}
}
sc.hasNextInt()
는 입력이 있기 전까지 대기하게끔 하는 역할을 한다. 입력 값이 int형이 아니면 false를 반환하여 while문을 빠져나오고, int형이면 true를 반환하여 반복이 계속된다.
사용자가 직접 int형 값을 입력하는 것이 아닌, 파일에 저장되어 있는 int형 값을 가져오는 방법이 있다. out.txt
파일을 생성하고 안에 숫자를 입력한 후 저장하자. 그리고 다음과 같이 프로그램을 작성한 후, 명령을 실행하면 out.txt
파일에 있는 값에 3배 곱해진 결과가 콘솔에 출력되는 것을 확인할 수 있다.
import java.util.Scanner;
import java.io.*;
public class makeFile {
public static void main(String[] args) {
try {
File file = new File("out.txt");
System.out.println("out.txt파일을 열어옵니다.");
Scanner sc = new Scanner(file);
while(sc.hasNextInt()) {
System.out.println(sc.nextInt()*3);
}
System.out.println("while문이 종료됩니다.");
} catch(FileNotFoundException e) {
e.printStackTrace();
}
}
}
컴파일 결과는 out.txt
에 입력된 파일의 내용에 따라 다르다.