質問: 0; i < num_items; i++){ System.out.println(i+1 +". "+ ToDoList[i].month + "月" + ToDoList[i].day + "日 " + ToDoList[i].item + " 優先度:" + ToDoList[i].priority); // 昇順になる } } } } } ``` ### 試したこと num_itemsをToDo.sizeに書き換えましたが、エラーは改善されませんでした。 ### 補足情報(言語/FW/ツール等のバージョンなど) より詳細な情報
回答: まず大前提として... **変数名は小文字始まりで**書いてください。 クラス名のToDoと変数名のToDoが共存していて読みにくいことこの上ないです。 それでなくても習慣としてクラス名は大文字始まり、変数名は小文字始まりで書いてください。 さて、いろいろおかしいので突っ込んでいきます。 ``` ToDo] ToDoList = new ToDo[100]; //配列の宣言 //ArrayListに変換 ArrayList ToDo = new ArrayList(Arrays.asList(ToDoList));//<>の中にToDoを入れる(ToDoListはToDo型の配列であるため) ``` これも混乱の元ですね。配列なのに変数名にListが入っているし、さらに本当のArrayListが別にあるしで。 それはさておき、**ToDoListとToDoで内容は共有していない**ことに注意してください。 問題のremove以外で、**ToDoのリストToDoを触っている場所が一か所もありません。** それ以外は配列のToDoListをいじっているだけで、ToDoはノータッチです。 つまり、ToDoには最初から最後まで変化しません。最初の時点でnullが100個入っているだけです。 removeではこのnullのうち一つが削除されますが、結局表示しているのは配列の情報なので影響がないというだけの話です。 参考 コードをEclipseに突っ込んで変数ToDoをハイライト(宣言部を含めて3か所のみ) ![イメージ説明 !イメージ説明