[Java] 입력과 출력이라는 거대 담론에 대하여..

SeongEon Kim·2022년 4월 12일
0

JAVA

목록 보기
13/52

애플리케이션에 입력값을 전달하여 어떻게 출력할 수 있을지를 고민해보자.

  1. String[] args
public static void main(String[] args) {
	System.out.println(args.length);
}

위의 코드처럼 main이라는 메소드의 파라미터이다. 파라미터는 메소드로 들어오는 입력값이다.
아래 출력값에서 args.length는 args라는 배열이 몇개의 값을 담을 수 있는가를 뜻한다.

  1. Scanner
    Scanner는 라이브러리에 속한다. 라이브러리는 다음에 좀더 구체적으로 알아보자.
    public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
    	int i = sc.nextInt();
    	System.out.println(i*1000);
    	sc.close();
    }

 위 코드에서 main 메소드가 호출하는데 , 입력값을 입력하지 않았으므로 String[] args 부분은 아무런 값도 존재하지 않는다.
 그 다음 줄에서 new Scanner가 먼저 실행되는데 그 중 괄호안 System.in이 실행되는데, 이것은 사용자가 입력한 값이라고 보면 된다.
 Scanner는 사용자가 입력한 값을 스캔하겠다. 즉, 알아내겠다는 목적으로 기능한다.
 
 그리고 sc.nextInt의 값이 실행되는데, nextInt라는 메소드가 실행이 멈춰지면서 사용자가 입력한 값이 i라는 변수에 담기게 된다.
 그리하여 밑의 i 곱하기 1000 에 적용된 값이 최종적으로 출력된다.
 
 위의 코드는 사용자가 한번 입력하면 다시 실행시켜야 한다. 사용자가 입력할때마다 다시 실행시키는 번거로움을 덜기 위해 아래와 같이 코드를 적을 수 있다.
 

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt()) {
System.out.println(i*1000);
}
sc.close();
}

 Scanner코드에서 소개한 첫번째 코드와 다른점은 while이 sc.hasNextInt 메소드 실행을 중간에 멈추는게 아니라 계속 실행시킨다.
 단, 사용자가 입력한게 정수가 아니라 글자나 실수라면 Scanner 는 종료가 된다.
 
 
3. 여러형태의 입출력

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();
}
}

 new Scanner() 괄호안 file을 적게되면
사용자가 입력한 값이 file에 자동적으로 기입된다.
 그 파일에 들어가는 숫자에 1000을 곱해서 출력된다.
 FileNotFoundException이라는 메소드는 만약 out.txt라는 메모장형식의 파일을 찾지 못할 경우 예외값을 출력하는 기능을 가지고 있다. 
 
  
 제목은 거대 담론이라고 힘을 주었지만..그냥 내가 배우다가 궁금했던 점 몇가지만 적어보았다...
 
profile
꿈을 이루는 사람

0개의 댓글