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

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

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

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

Q&A

解決済

1回答

2340閲覧

Java カレンダーに予定を追加したい 予定に人物の情報も入れたい

andersong

総合スコア7

Java

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

0グッド

1クリップ

投稿2020/08/09 05:31

カレンダーに予定を入れるプログラムを作りたいのですがエラーが表示されました
エラーは
CalendarSystem.java:270: エラー: シンボルを見つけられません
last_sn_p=sn;
^
シンボル: 変数 last_sn_p
場所: クラス CalendarSystem
CalendarSystem.java:404: エラー: シンボルを見つけられません
ps_list.add(new Person(++last_sn_p,n,b,m));
^
シンボル: 変数 last_sn_p
場所: クラス CalendarSystem
エラー2個
のように出ました
コードは

import java.io.*; import java.util.*; import java.text.*; public class CalendarSystem { public class Person { public int sn; public String name; public Date birth; public char gender; public Person (int s, String n, String b, char g) throws ParseException { sn=s; name=n; SimpleDateFormat sdf=new SimpleDateFormat ("yyyy/MM/dd"); birth=sdf.parse (b); gender=g; } public String toString() { SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); int td=Integer.parseInt(sdf. format (new Date())); int bd=Integer.parseInt(sdf. format (birth)); int age= (td-bd) /10000; String g=(gender=='m')?"男":((gender=='f')?"女":"?"); return name+" ("+age+" 歳:"+g+")"; } } public class Schedule { public int sn; public Date date; public String content; public Person person; public Schedule (int s, String dt, String c,Person p) throws ParseException { sn=s; SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd hh:mm"); date=sdf.parse(dt); content=c; person=p; } public String toString() { if(person==null) return String.format("%04d:%tY/%<tm/%<td %<tH:%<tM %s" ,sn,date,content); return String.format("%04d:%tY/%<tm/%<td %<tH:%<tM %s %s" ,sn,date,content,person); } } private int last_sn; private List<Schedule> sc_list; private int lasat_sn_p; private List<Person> ps_list; private String file_name="schedule.csv"; 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; break; case "add":/*end_flag=false;*/ addSchedule(cmd);break; case "list":/*end_flag=false;*/ listSchedules(cmd);break; case "save":/*end_flag=false;*/ saveSchedules(cmd);break; case "load":/*end_flag=false;*/ loadSchedules(cmd);break; case "modify":/*end_flag=false;*/ modifySchedule(cmd);break; case "del":/*end_flag=false;*/ deleteSchedule(cmd);break; case "set":/*end_flag=false;*/ changeSettings(cmd);break; case "help":/*end_flag=false;*/ showHelp();break; default: msg("コマンド"+cmd+"がわかりません。"); } } quitSystem(); } private void initSystem(){ msg("*** 予定管理システムSP8へようこそ! ***"); last_sn=0; sc_list=new ArrayList<Schedule>(); loadSchedules(null); } private void quitSystem(){ msg("バイバイ!、また使ってね"); saveSchedules(null); } private void msg(String m){ System.out.println(m); } private void msg0(String m){ System.out.print(m); } private String input(){ try{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); return br.readLine(); }catch(IOException e){} return null; } private String[] inputCommand(){ msg0("コマンドは?"); String s=input(); if(s!=null) return s.split(" "); String[] r={ "" }; return r; } private void addSchedule(String[] cmd){ if(cmd.length!=4 && cmd.length!=5){ msg("addコマンドの構文が不正です"); return; } try{ String d=cmd[1] +" "+cmd[2]; String c=cmd[3]; Person p=null; if(cmd.length==5) p=findPerson(cmd[4]); sc_list.add(new Schedule (++last_sn,d,c,p)); }catch (ParseException e){ msg("日付が不正です"); } } private void listSchedules(String[] cmd){ if(cmd.length==1){ listAllSchedules(); return; } switch(cmd[1]){ case "d" : listBitweenDates(cmd[2],cmd[3]); break; case "dt" :listBitweenDateTimes(cmd[1],cmd[3]);break; case "k" :listContainKeyword(cmd[2]) ;break; } } private void listAllSchedules(){ for(Schedule s:sc_list) msg(" "+s); } private void listContainKeyword(String kw){ for(Schedule s:sc_list){ if(s.content.indexOf(kw)!=-1) msg(" "+s); } } private void listBitweenDates (String s1, String s2) { listBitweenDateTimes (s1+" 00:00", s2+" 23:59"); } private void listBitweenDateTimes (String s1, String s2) { try{ if(s1.charAt(0)=='-') s1="1900/1/1 00:00"; if(s2.charAt(0)=='-') s2="9999/12/31 23:59"; SimpleDateFormat sdf=new SimpleDateFormat ("yyyy/MM/dd hh:mm"); Date d1=sdf.parse (s1); Date d2=sdf.parse (s2); if (d1.compareTo (d2)>0){ Date t=d1; d1=d2; d2=t; } for (Schedule s:sc_list) { if(s.date.compareTo (d1)>=0 && s.date.compareTo (d2)<=0) msg (" "+s); } } catch (ParseException e) { msg ("日付が不正です。"); } } private void saveSchedules(String[] cmd){ String fn=file_name; if (cmd != null && cmd.length == 2) fn=cmd[1]; try{ PrintWriter pw=new PrintWriter(new FileWriter(fn)); pw.println(ps_list.size()); for(Person p:ps_list){ String csv=String.format("%d,%s,&tY/%<tm/%<tm,%c",p.sn,p.name,p.birth,p.gender); pw.println(csv); } pw.println(sc_list.size()); for(Schedule s:sc_list){ int psn=-1; if(s.person!=null) psn=s.person.sn; String csv=String.format("%d,%tY/%<tm/%<td,%<tH:%<tM,%s",s.sn,s.date,s.content); pw.println(csv); } pw.close(); }catch(IOException e){ msg("保存失敗:"+fn); } } private void loadSchedules (String[] cmd) { String fn=file_name; if (cmd != null && cmd.length == 2) fn=cmd[1]; try { BufferedReader br=new BufferedReader (new FileReader(fn)); ps_list.clear(); int n=Integer.parseInt(br.readLine()); for(int i=0;i<n;i++){ String l=br.readLine(); String[] tok=l.split(","); int sn=Integer.parseInt(tok[0]); String nm=tok[1]; String b=tok[2]; char g=tok[3].charAt(0); ps_list.add(new Person(sn,nm,b,g)); last_sn_p=sn; } sc_list.clear(); last_sn=0; /*int*/ n=Integer.parseInt (br.readLine()); for(int i=0;i<n;i++){ String l=br.readLine(); String[] tok=l.split(","); int sn=Integer.parseInt(tok[0]); String d=tok[1]+" "+tok[2]; String c=tok[3]; int ps=Integer.parseInt(tok[4]); Person p=null; if(ps!=-1) p=findPerson(ps); sc_list.add(new Schedule (sn, d, c,p)); if (last_sn<sn) last_sn=sn; } br.close(); } catch (IOException e) { msg("読み込み失敗:"+fn); }catch (ParseException e) { msg("CSVファイルが不正です"); } } private void modifySchedule(String[] cmd){ int sn=Integer.parseInt(cmd[1]); Schedule sc=findScheduleBySn(sn); if(sc==null){ msg("予定がありません。"); return; } switch(cmd[2]){ case "d": modifyScheduleDate(sc,cmd[3]+" "+cmd[4]); break; case "c": modifyScheduleContent(sc,cmd[3]); break; } } private Schedule findScheduleBySn(int sn){ for(Schedule s:sc_list) if(s.sn==sn) return s; return null; } private void modifyScheduleDate(Schedule sc ,String dt){ try{ SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd hh:mm"); sc.date=sdf.parse(dt); }catch(ParseException e){ msg("日付が不正です"); } } private void modifyScheduleContent(Schedule sc,String c){ sc.content=c; } private void deleteSchedule(String[] cmd){ int sn=Integer.parseInt(cmd[1]); Schedule sc=findScheduleBySn(sn); if(sc==null){ msg("予定がありません。"); return; } msg0("予定「"+sn+"を削除しますか?"); String s=input(); if(s.charAt(0)=='y') sc_list.remove(sc); } private void changeSettings(String[] cmd){ switch(cmd[1]){ case "fn": setFileName(cmd[2]); break; } } private void setFileName(String fn){ file_name=fn; msg("保存ファイル名を"+fn+"に変更しました。"); } private void showHelp(){ msg("コマンド:"); msg("add : 新しい予定を追加する(add 2020/5/1 8:00 出勤する"); msg("list : 予定の一覧を追加する"); msg("modify : 予定を修正する"); msg("del : 予定を削除する"); msg("save : 予定をファイルに書き出す"); msg("load : 予定をファイルから読み込む"); msg("help : コマンドの使用法を表示する"); msg("set : 設定を変更する"); msg("quit : 終了する"); } private Person findPerson(String n){ for(Person p:ps_list) if(p.name.equals(n)) return p; return null; } private Person findPerson(int sn){ for(Person p:ps_list) if(p.sn==sn) return p; return null; } private void addPerson(String[] cmd){ if(cmd.length!=4){ msg("コマンド構文が不正です。"); return; } try{ String n=cmd[1]; String b=cmd[2]; char m=cmd[3].charAt(0); ps_list.add(new Person(++last_sn_p,n,b,m)); }catch(ParseException e){ msg("日付が不正です。"); } } }

です。
どこを修正すればよいでしょうか。

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

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

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

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

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

javahack

2020/08/09 06:42

エラーが出たら反射的に質問するのではなく、原因を自分でもう少し調べてはいかがでしょうか。 エラーメッセージは非常に良く見かける類のものなので、Googleやteratail内で検索すればヒントはいくらでも見つかると思います。
guest

回答1

0

ベストアンサー

java

1private int lasat_sn_p;

last_sn_p のタイポかと思います。

投稿2020/08/09 15:13

A-pZ

総合スコア12011

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問