mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Saturday, October 14, 2006

자바Java] (Yes/No)? (Y/N)? (예/아니오)? 키보드로 입력 받기, 묻기


사용자의 확인을 거쳐야 할 때, Yes/No 입력을 받는 메소드가 필요한데, 그런 메소드(함수)가 제공되지 않아서 직접 만들어야 했습니다.

그런데 C의 getch() 처럼 키보드에서 직접 입력을 받는 함수가 없었고, 표준 입력을 통해서 입력받는 방법만 있어서, "1글자만 입력 받기"가 그리 깔끔하게 처리되지 않았습니다. 그렇지만 실용성에는 문제가 없습니다.

아무튼 다음과 같은 방법으로, 예/아니오/취소를 물을 수 있습니다.

getYesNoKey() 는 Y/N을 묻고

getYesNoCancelKey() 는 Y/N 그리고 "취소"를 묻습니다. 단순히 예/아니오 말고도, 완전히 뭔가를 취소하는 선택 사항도 실제 프로그래밍에서는 필요합니다.


Yes/No, 예/아니오/취소, 입력 받기 예제


파일명: Foo.java
public class Foo {
  public static void main(String args[]) {

    // Yes/No 묻기
    System.out.print("할까요, 말까요? (Yes/No) ? ");
    if (getYesNoKey()) System.out.println("Y를 누르셨군요.");
    else System.out.println("N을 누르셨군요.");



    // Yes/No/Cancel 묻기
    System.out.print("할까요, 말까요, 아예 취소할까요? (Yes/No/Cancel) ? ");

    switch (getYesNoCancelKey()) {
      case 1: System.out.println("Y를 누르셨군요.");        break;
      case 0: System.out.println("N을 누르셨군요.");        break;
      case 2: System.out.println("C를 눌러 취소하셨군요."); break;
    }

  }



  public static boolean getYesNoKey() {
    int key;

      java.util.Scanner oScanner = new java.util.Scanner(System.in);

      do { key = oScanner.findInLine(".").charAt(0);
           if (key == 'y' || key == 'Y') return true;
           if (key == 'n' || key == 'N') return false;
      } while (key != 0);

    return false; // 이 줄은 실행되지 않음
  }


  public static int getYesNoCancelKey() {
    int key;

      java.util.Scanner oScanner = new java.util.Scanner(System.in);

      do { key = oScanner.findInLine(".").charAt(0);
           if (key == 'y' || key == 'Y') return 1;
           if (key == 'n' || key == 'N') return 0;
           if (key == 'c' || key == 'C') return 2;
      } while (key != 0);

    return 0; // 이 줄은 실행되지 않음
  }

}



업데이트:
버그를 고쳤습니다. System.in.read() 로 입력받으면 y 가 아닌 yyyyyyy 이렇게 입력하면, 오작동했습니다. 그래서 Scanner(System.in) 으로 입력받게 했습니다.


do while 루프문은, 사용자가 Y/N이 아닌 엉뚱한 키를 눌렀을 때, 다시 입력받기 위한 것입니다.


실행 결과:
D:\Z>javac Foo.java && java Foo
할까요, 말까요? (Yes/No) ? y
Y를 누르셨군요.
할까요, 말까요, 아예 취소할까요? (Yes/No/Cancel) ? c
C를 눌러 취소하셨군요.

D:\Z>





완전한 문자열이나 숫자(실수/정수)를 키보드로부터 입력받는 법: ▶▶ Java/자바] 키보드 입력; 사용자 문자열/숫자 입력 받기; User Input String, Number


키보드를 누를 때까지 프로그램 정지시키는 법: ▶▶ Java/자바] 일시 중지/정지 Pause 시키기; Enter키를 누르면 계속됩니다 메시지




tag: java
자바 | Java

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top