###前提・実現したいこと
case1で入力した予定をcase2,3,4で表示するプログラムを作っています。
入力した予定がうまく表示できません。
case1で入力した予定をcase1で表示できることは確認いたしました。
case2,3,4に何か問題があると思います。
どなたか修正点を教えていただけないでしょうか?
###発生している問題・エラーメッセージ
エラーメッセージはありません。
###該当のソースコード
Java
1import java.util.ArrayList; 2import java.util.List; 3import java.io.*; 4import java.util.Comparator; 5 6class ToDo{ 7 int month; 8 int day; 9 String item; 10 int priority; 11} 12 13class sort24 14{ 15 public static void main(String[] args)throws IOException 16 { 17 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 18 19 while(true){ 20 21 ArrayList<ToDo> todo = new ArrayList<ToDo>(); 22 23 System.out.println("予定を追加するなら1を入力。"); 24 System.out.println("予定を月順で表示するなら2を入力"); 25 System.out.println("予定を優先度順で表示するなら3を入力"); 26 System.out.println("予定を削除するなら4を入力"); 27 28 String str = br.readLine(); 29 int num = Integer.parseInt(str); 30 31 ToDo tmp = new ToDo(); 32 33 switch(num){ 34 case 1: 35 36 do{ 37 System.out.println("月を入力して下さい(1〜12)"); 38 39 String month = br.readLine(); 40 tmp.month = Integer.parseInt(month); 41 42 }while(!(1 <= tmp.month && tmp.month <= 12)); 43 44 do{ 45 System.out.println("日を入力して下さい(1〜31)"); 46 47 String day = br.readLine(); 48 tmp.day = Integer.parseInt(day); 49 50 }while(!(1 <= tmp.day && tmp.day <= 31)); 51 52 System.out.println("予定"); 53 54 String item = br.readLine(); 55 tmp.item = item; 56 57 58 do{ 59 System.out.println("優先度を入力して下さい(1〜5)"); 60 61 String priority = br.readLine(); 62 tmp.priority = Integer.parseInt(priority); 63 64 }while(!(1 <= tmp.priority && tmp.priority <= 5)); 65 66 todo.add(tmp); 67 68 //追加したところ case1では表示される 69 for(int i = 0; i < todo.size(); i++){ 70 System.out.println(todo.size() +":"+ todo.get(i).month + "月" + todo.get(i).day + "日 " + todo.get(i).item + " 優先度:" + todo.get(i).priority); // 昇順になる 71 } 72 73 break; 74 75 case 2://case2以降に問題がある 76 System.out.println("予定です。(月昇順)"); 77 78 todo.sort(new Comparator<ToDo>() { 79 80 public int compare(ToDo todo1, ToDo todo2) { 81 82 int month = Integer.compare(todo1.month, todo2.month); 83 84 if (month == 0) { 85 return Integer.compare(todo1.day, todo2.day); 86 } 87 else { 88 return month; 89 } 90 } 91 }); 92 93 for(int i = 0; i < todo.size(); i++){ 94 System.out.println(todo.size() +". "+ todo.get(i).month + "月" + todo.get(i).day + "日 " + todo.get(i).item + " 優先度:" + todo.get(i).priority); // 昇順になる 95 } 96 break; 97 98 case 3: 99 System.out.println("予定です。(優先度昇順)"); 100 101 todo.sort((a,b)-> a.priority - b.priority); 102 103 for(int i = 0; i < todo.size(); i++){ 104 System.out.println(todo.size() +". "+ todo.get(i).month + "月" + todo.get(i).day + "日 " + todo.get(i).item + " 優先度:" + todo.get(i).priority); // 昇順になる 105 } 106 break; 107 108 case 4: 109 System.out.println("削除したい予定の番号を入力して下さい。(月順の場合)"); 110 do{ 111 String remove1 = br.readLine(); 112 todo.remove(Integer.parseInt(remove1)-1);//-1する 113 }while(!(1 <= todo.size())); 114 115 System.out.println("予定が削除されました。"); 116 117 for(int i = 0; i < todo.size(); i++){ 118 System.out.println(todo.size() +". "+ todo.get(i).month + "月" + todo.get(i).day + "日 " + todo.get(i).item + " 優先度:" + todo.get(i).priority); // 昇順になる 119 } 120 121 break; 122 } 123 } 124 } 125} 126
###試したこと
case1では入力した値を表示できることは確認しました。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/22 02:27
2018/01/22 02:44