カレンダー5
聞けば聞くほど、初級者が聞くべき授業ではないと感じます.知らない部分が増えてきたので、googlingで好奇心を解消することが制限され、徐々に聞き書きになりました.しかし、今このように勉強すれば、初めて理論を勉強するときに少し役に立ちます.とりあえずTIL
今回は、作成したカレンダーに登録し、スケジュールなどの付加機能を展示します.
メニューを出力します.
whileはドア内でswitch文を使用し、各メニューでどのような方法を使用するかを指定します.
)
講義では、switchゲートの代わりにifゲートを使った.ずいぶん前の授業だったので、スイッチドアに文字が届いていなかったようです.だから私は答えを知らないでコードを書いて、最初は
)
また,G)のコードを見ると,case"1"とcase"2"にブレークポイントがあり,ここでも長い間うろうろしていた.中間チェックをするために、メニューを全部入力して、3、h、qはすべて動作して、1、2を入力すると、3つのカレンダービューが一緒に出力されます.だから私は何度もグーグルを試したが、よく分からず、ネット上に流れている他のスイッチドアコードを見て、caseごとにbreakドアがあることに気づいたので、貼って解決した.
)
ちなみにif文を使用する場合
)
新しいメソッドを作成する場合は、必要な名前のメソッドを入力してエラーが発生したら、エラーをクリックして高速ファイルを表示し、create methodをクリックしてメソッドを自動的に作成します.
新しくメソッドが作成されたため、ScannerクラスとCalendarクラスは存在しません.ここには2つの解決策がある.1つ目の方法はcmdCal法を繰り返し使用することである.
今回は、作成したカレンダーに登録し、スケジュールなどの付加機能を展示します.
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でも同様にパラメータが埋め込まれ、エラーが発生しません.Reference
この問題について(カレンダー5), 我々は、より多くの情報をここで見つけました https://velog.io/@k_siik/캘린더5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol