カレンダー5


聞けば聞くほど、初級者が聞くべき授業ではないと感じます.知らない部分が増えてきたので、googlingで好奇心を解消することが制限され、徐々に聞き書きになりました.しかし、今このように勉強すれば、初めて理論を勉強するときに少し役に立ちます.とりあえずTIL
今回は、作成したカレンダーに登録し、スケジュールなどの付加機能を展示します.

1.簡単なコンソールベースUIの作成

    public void printMenu() {
        System.out.println("+------------------+");
        System.out.println("|   1. 일정 등록 ");
        System.out.println("|   2. 일정 검색 ");
        System.out.println("|   3. 달력 보기 ");
        System.out.println("|   h. 도움말  q. 종료 ");
        System.out.println("+------------------+");
    }
printMenuメソッドを作成したら、メニューリストを作成します.

2.runPromptメソッドで入力固有のメソッドを指定し、メニューリストの入力値を受信します。

	public void runPrompt() {
        printMenu();

        Scanner scanner = new Scanner(System.in);
        Calendar cal = new Calendar();

        while(true) {
            System.out.println("명령 (1, 2, 3, h, q)");
            String cmd = scanner.next();
            switch(cmd) {
                case "1" : cmdRegister(); break;
                case "2" : cmdSearch(); break;
                case "3" : cmdCal(scanner, cal);
                case "h" : printMenu();
            }
            if (cmd.equals("q")) break;
        }
        System.out.println("Thank you. Bye");
        scanner.close();

    }

(1) printMenu();


メニューを出力します.

(2)while文


whileはドア内でswitch文を使用し、各メニューでどのような方法を使用するかを指定します.
)
講義では、switchゲートの代わりにifゲートを使った.ずいぶん前の授業だったので、スイッチドアに文字が届いていなかったようです.だから私は答えを知らないでコードを書いて、最初は
            switch(cmd) {
                case "1" : cmdRegister(); break;
                case "2" : cmdSearch(); break;
                case "3" : cmdCal(scanner, cal);
                case "h" : printMenu();
                case "q" : break;
            }
と書いてありました.ただし、リカバリ不可能な文エラーが発生し、while文以降のコードは実行できません.Googlingで分かった事実は、switchドア内のbreakドアはswitchドアを中断するだけで、ドアを中断することはありません.逆に、無限リング内ifゲート上のbreakゲートは無限リングを中断することができる.だからswitchゲートではなくifゲートを使いたかったのですが、case「q」だけを外してifゲートに変えました.これにより、以下の出力文を出力することが決定されます.
)
また,G)のコードを見ると,case"1"とcase"2"にブレークポイントがあり,ここでも長い間うろうろしていた.中間チェックをするために、メニューを全部入力して、3、h、qはすべて動作して、1、2を入力すると、3つのカレンダービューが一緒に出力されます.だから私は何度もグーグルを試したが、よく分からず、ネット上に流れている他のスイッチドアコードを見て、caseごとにbreakドアがあることに気づいたので、貼って解決した.
)
ちなみにif文を使用する場合
if (cmd == "q") {.....}
いいえ.
if (cmd.equals("q")) {.....}
このように使うべきです.
)
新しいメソッドを作成する場合は、必要な名前のメソッドを入力してエラーが発生したら、エラーをクリックして高速ファイルを表示し、create methodをクリックしてメソッドを自動的に作成します.

3.cmdCalメソッド

    private void cmdCal(Scanner s, Calendar c) {

        System.out.println("년을 입력하세요.");
        System.out.print("year> ");
        int year = s.nextInt();

        System.out.println("월을 입력하세요.");
        System.out.print("month> ");
        int month = s.nextInt();
        if (month < 1 || month > 12) {
            System.out.println("잘못 입력하셨습니다.");
            return;
        }
        c.printCalendar(year, month);
    }
runPromptメソッドの年、月入力コードをcmdCalメソッドに移動し、cmd入力3を使用してメニュー「カレンダービュー」を実行します.
新しくメソッドが作成されたため、ScannerクラスとCalendarクラスは存在しません.ここには2つの解決策がある.1つ目の方法はcmdCal法を繰り返し使用することである.
	Calendar cal = new Calendar();
    Scanner scanner = new Scanner(System.in);
書き方がある.しかし、ある機能が実現されるたびに、このように再ロードすることはコードの作成にとって非常に非効率であり、コンピュータ内でもシステム内部に大きな負荷がかかるため、これは消費的な行為である.だから1つ目の方法は使用されていません.2つ目の方法には、宣言されたものを外から呼ぶ方法があります.使用する機能をカッコ内に書き、外からロードできます.
private void cmdCal(Scanner s, Calendar c)
これでパラメータが埋め込まれるので、他のメソッドで呼び出されたcmdCalでも同様にパラメータが埋め込まれ、エラーが発生しません.