前提・実現したいこと
java言語で1~100までの乱数を5回連続生成し、10回連続表示するプログラムを作成しています。
*イメージ
11,12,13,14,15,16,17,18,19,20
97,48,59,72,75,58,64,30,50,43,
27,90,86,76,19,39,47,83,54,46,
29,23,14,71,94,15,53,28,65,74,
51,18,10,93,22,100,45,62,57,95,
56,24,63,49,80,77,73,55,41,68,
条件として「,」で区切った数字を好きなだけ乱数から除外し、「‐」で囲んだ範囲の数字を削除(例:15-20で15~20を乱数から削除する)する必要があります。
発生している問題・エラーメッセージ
カンマ区切りの数字除外が上手くいきません。
「コンソールの数字を読み取りリストに追加 」(コメント)の処理のところでリストで追加されるのが、コンソールの数字ではなくインデックスの番号になってしまいます。
また、‐区切りでどんな処理を書いたらいいのかわかりません。
該当のソースコード
ArrayList list = new ArrayList(); // for (int i = 1; i <= 100; i++) { // list.add(i); // } Scanner scan = new Scanner(System.in); String num = scan.next(); String kanma = ","; String removerRange = "-"; String[] split = num.split(",", -1); if (num.contains(kanma)) {
// コンソールの数字を読み取りリストに追加
for (int i = 0; i < split.length; i++) {
//
list.add(i);
}
}
for (int i = 0; i < 5; i++) {
// System.out.print((i + 1) + " ");
for (int j = 0; j < 10; j++) {
// 乱数生成
Random rnd = new Random();
int rand = rnd.nextInt(100) + 1;
if (!list.contains(rand)) { // 今までに出たことが無い数のとき // リストに追加 list.add(rand); // 出力 System.out.print(rand + ","); } else { // 今までに出たことがある数のとき // もう一度やりなおし j--; } } System.out.println(); } } }
ソースコード
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。