티스토리 뷰

“Hello World” 프로그램은 프로그래밍 언어를 배울 때 가장 먼저 작성하는 프로그램이다. 하지만 이 프로그램에는 입력을 받는 부분이 없다. 그래서 여기에서는 여러분의 이름을 입력 받아 이름을 이용하여 인사말을 출력하는 프로그램을 작성해보자.

#출력 예

What is your name? Brian

Hello, Brian, nice to meet you!

#제약 조건

  • 입력 부분, 문자열 연결(String concatenation) 부분, 출력 부분을 별도로 작성할 것

#도전 과제

  • 변수를 사용하지 않는 새로운 버전을 작성하라.

  • 사람들마다 서로 다른 인사말이 나타나도록 프로그램을 작성하라.





My Code


package example01;
 
import java.util.Random;
import java.util.Scanner;
 
public class HelloWorld {
 
    public static void main(String[] args) {
        scannerim();
    }
    
    static void scannerim() {
        try {
            System.out.print("What is your name?");
            Scanner scan = new Scanner(System.in);
            String s = scan.nextLine();
            scan.close();
            
            String[] ss = {"Hi, ""Hello, ""Welcome, "};
            String[] sss = {", nice to meet you."" how do you do?"};
            
            Random r = new Random();                    
            
            System.out.print(ss[r.nextInt(ss.length)]+ s +sss[r.nextInt(sss.length)]);
            System.out.println("");    
            
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
    
    
 
}
cs


Result

 

 

 


Java는 입력 함수로 쓸 수 있는 것이 3개가 있는데
System.in은 입력한 값을 출력하면 헥사값으로 나오기 때문에 변환 작업을 해야 하고,
InputStramReader는 System.in에서 사용하는 import문에 하나 더 추가 해야 되서
보다 코딩이 길어진다.

따라서 보다 코딩이 짧아질 수 있는 입력 함수인 Scanner 를 사용했다.


그리고 여기서 C#과 다른 점을 발견했다.

C#은 함수 안에 같은 함수를 써서 루프를 줄 수 있는데 Java는 그게 안 된다.

 

 

 

scannerim 함수 안에 scannerim 함수를 추가하여 입력, 출력 후 발생하는 오류


왜 안 되는지 모르겠다.


혹시 이 함수만 안 되는 것일까?

 

혹시 되는 방법이 있을까?


그건 좀 더 테스트 해봐야겠다.

 

 

=========================================

 

몇 분 후..

 

scan.close();

를 하면 스트림을 닫아버리는 게 되어 더 이상 뭔가를 읽을 수 없는 상태가 되는 것이다.

(함수 실행할 때마다 새로 객체 선언하는건데 되야 하는 거 아닌가??)

 

scan.close();를 지우니까 잘 된다.

 



댓글
글 보관함
최근에 올라온 글
최근에 달린 댓글