質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

471閲覧

java switch,case文 予定管理システム 予定追加をしたい

andersong

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/08/03 07:39

java11.0.7で

import java.io.;
import java.util.
;
import java.text.*;

public class CalendarSystem {

public class Schedule {
private int sn;
private Date date;
private String content;

public Schedule (int s, String dt, String c) throws ParseException {
sn=s;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd hh:mm");
date=sdf.parse(dt);
content=c;
}

public String toString() {
return String.format("%04d:%tY/%<tm/%<td %<tH:%<tM %s" ,sn,date,content);
}

}

private int last_sn;
private List<Schedule> sc_list;

public static void main (String[] args){
(new CalendarSystem() ).exec();

}

private void exec(){
initSystem();
boolean end_flag=false;
while(!end_flag){
String[] cmd=inputCommand();
switch(cmd[0]) {
case "quit":end_flag=true;quitSystem(); break;
case "add":end_flag=true; addSchedule(cmd);break;
case "list":end_flag=true; listSchedules();break;
default:
msg("コマンド"+cmd+"がわかりません。");
}
}
/quitSystem();/
}

private void initSystem(){
msg("*** 予定管理システムSP3へようこそ! ***");
last_sn=0;
sc_list=new ArrayList<Schedule>();

}

private void quitSystem(){
msg("バイバイ!、また使ってね");
}

private void msg(String m){
System.out.println(m);

}
private void msg0(String m){
System.out.print(m);

}

private String[] inputCommand(){
msg0("コマンドは?");
try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String l=br.readLine();
return l.split(" ");
}catch(IOException e){}
String[] r={ "" };
return r;
}

private void addSchedule(String[] cmd){
if(cmd.length!=4){
msg("addコマンドの構文が不正です");
return;
}
try{
String d=cmd[1] +" "+cmd[2];
String c=cmd[3];
sc_list.add(new Schedule (++last_sn,d,c));
}catch (ParseException e){
msg("日付が不正です");
}
}

private void listSchedules(/String[] cmd/){
for(Schedule s:sc_list){
msg(" "+s);
}
}

}

cmd

と書いてエラー無くjavacはできたのですが予定の追加をしようとするとすぐに終わってしまいます。
case文が間違っているようなのですがどう修正すればよいかソースコードをお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

case "add":end_flag=true; addSchedule(cmd);break;
一週目、addが入力された時点で、end_flag=true;になっていますので、
while(!end_flag) で、反転されてfalseとなり、ループは終了します。
終了フラグであるなら、継続させたい間はtrueにしてはいけません。

投稿2020/08/03 07:47

amiya

総合スコア1218

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

andersong

2020/08/03 09:26

ありがとうございます。 何とか動いてくれました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問