###前提・実現したいこと
キーボードから月日、予定、優先度を入力して予定表を作っています。
現在登録した予定を削除する機能を実装中に以下のエラーメッセージが発生しました。
わかるかたいらっしゃいましたらご享受ください。
###発生している問題・エラーメッセージ
Exception in thread "main" java.io.IOException: Stream closed at java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:170) at java.io.BufferedInputStream.read(BufferedInputStream.java:336) at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) at java.io.InputStreamReader.read(InputStreamReader.java:184) at java.io.BufferedReader.fill(BufferedReader.java:161) at java.io.BufferedReader.readLine(BufferedReader.java:324) at java.io.BufferedReader.readLine(BufferedReader.java:389) at sort17.main(sort17.java:31)
###該当のソースコード
java
1import java.util.List; 2import java.util.ArrayList; 3import java.util.Comparator; 4import java.io.*; 5 6class ToDo { 7 int number; 8 int month; 9 int day; 10 String item; 11 int priority; 12 13 @Override 14 public String toString() { 15 return this.number + "." + this.month + "月" + this.day + "日 " + this.item + "優先度:" + this.priority; 16 } 17} 18 19public class sort17 { 20 public static void main(String[] args) throws IOException { 21 try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) { 22 23 List<ToDo> ToDoList = new ArrayList<>(); 24 25 while (true) { 26 System.out.println("予定を追加するなら1を入力。"); 27 System.out.println("予定を月順で表示するなら2を入力"); 28 System.out.println("予定を優先度順で表示するなら3を入力"); 29 System.out.println("予定を削除するなら4を入力"); 30 31 String str = br.readLine(); 32 int num = Integer.parseInt(str); 33 34 switch (num) { 35 case 1: 36 ToDo todo = new ToDo(); 37 38 todo.number = ToDoList.size() + 1;//最初の番号が1から増えない 39 40 do { 41 System.out.println("月を入力して下さい(1〜12)"); 42 43 String month = br.readLine(); 44 todo.month = Integer.parseInt(month); 45 46 } while (!(1 <= todo.month && todo.month <= 12)); 47 48 do { 49 System.out.println("日を入力して下さい(1〜31)"); 50 51 String day = br.readLine(); 52 todo.day = Integer.parseInt(day); 53 54 } while (!(1 <= todo.day && todo.day <= 31)); 55 56 System.out.println("予定"); 57 58 String item = br.readLine(); 59 todo.item = item; 60 61 do { 62 System.out.println("優先度を入力して下さい(1〜5)"); 63 64 String priority = br.readLine(); 65 todo.priority = Integer.parseInt(priority); 66 67 } while (!(1 <= todo.priority && todo.priority <= 5)); 68 69 ToDoList.add(todo); 70 71 break; 72 73 case 2: 74 display_month_order(ToDoList); 75 76 break; 77 case 3: 78 display_priority_order(ToDoList); 79 break; 80 case 4: 81 remove_order(ToDoList); 82 break; 83 } 84 } 85 } 86 } 87 88 public static void display_month_order(List<ToDo> ToDoList) { 89 90 System.out.println("=========="); 91 System.out.println("予定です。(月昇順)"); 92 93 ToDoList.sort(new Comparator<ToDo>() { 94 95 @Override 96 public int compare(ToDo todo1, ToDo todo2) { 97 98 int month = Integer.compare(todo1.month, todo2.month); 99 100 if (month == 0) { 101 return Integer.compare(todo1.day, todo2.day); 102 } 103 else { 104 return month; 105 } 106 } 107 }); 108 109 ToDoList.forEach(t -> System.out.println(t)); 110 111 System.out.println("=========="); 112 } 113 114 public static void display_priority_order(List<ToDo> ToDoList) { 115 116 System.out.println("=========="); 117 System.out.println("予定です。(優先度昇順)"); 118 119 ToDoList.sort((a, b) -> a.priority - b.priority); 120 ToDoList.forEach(t -> System.out.println(t)); 121 122 System.out.println("=========="); 123 } 124 public static void remove_order(List<ToDo> ToDoList) throws IOException { 125 try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) { 126 127 System.out.println("削除したい予定の番号を入力してください。(月順の場合)"); 128 129 ToDoList.sort(new Comparator<ToDo>() { 130 131 @Override 132 public int compare(ToDo todo1, ToDo todo2) { 133 134 int month = Integer.compare(todo1.month, todo2.month); 135 136 if (month == 0) { 137 return Integer.compare(todo1.day, todo2.day); 138 } 139 else { 140 return month; 141 } 142 } 143 }); 144 145 ToDoList.forEach(t -> System.out.println(t)); 146 147 String remove1 = br.readLine(); 148 ToDoList.remove(Integer.parseInt(remove1)-1);//削除できない 149 } 150 } 151} 152
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/11 10:36