티스토리 뷰
“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();를 지우니까 잘 된다.
댓글
글 보관함
최근에 올라온 글
최근에 달린 댓글