前提・実現したいこと
入力された1から10までの数字をリストから削除するコードを書いています。
1から10まで以外の数字が入力された場合と、一度入力された数字と同じ数字が入力された場合に『その数字は選べないよ!』と出力したいのですが、うまく行きません。
下記に記述してますが、エラーの場所は分かっていても何をどうすればいいかがわかっていない状況です。ご教授お願い致します。
発生している問題・エラーメッセージ
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.ArrayList.elementData(ArrayList.java:422) at java.util.ArrayList.remove(ArrayList.java:499) at kurohige.Kurohige.main(Kurohige.java:30)
該当のソースコード
package kurohige; import java.util.ArrayList; import java.util.Scanner; public class Kurohige { public static void main(String[] args) throws Exception { System.out.println("【黒ひげ危機一髪ゲーム!】"); System.out.println("下記から好きな数字を入力してください。"); System.out.println("[1,2,3,4,5,6,7,8,9,10]"); Scanner scan = new Scanner(System.in); int n = scan.nextInt(); ArrayList<Integer> array = new ArrayList<>(); array.add(1); array.add(2); array.add(3); array.add(4); array.add(5); array.add(6); array.add(7); array.add(8); array.add(9); array.add(10); while (n != 4){ array.remove(array.indexOf(n)); System.out.println("セーフ!"); System.out.println(""); System.out.println("下記から好きな数字を入力してください。"); System.out.println(array); n = scan.nextInt(); }if(n == -1) { System.out.println("その数字は選べないよ!"); System.out.println("下記から好きな数字を入力してください。"); n = scan.nextInt(); }else if(n == 4) { System.out.println("【ドッカーン!!】"); } } }
試したこと
スタックトレースを見るに、30行目のindexOfの部分が何か間違ってるのだろうとはわかるのですが、具体的にどうすればいいかがわかりません。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。