質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • Java

    15822questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • ArrayList

    104questions

    Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

0から10までの乱数を発生させてその値を表示し、0が出たら、それまで出力した整数の中から2を除いた数を選んで表示、2の入った要素をremove()メソッドで削除してから表示プログラムを作りたい

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 603

ssssa

score 29

public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        while (true) {
            Random rnd = new Random();
            int v = rnd.nextInt(10);
            System.out.println("0から10の値を出力:" + v);
            if (v == 0) {
                break;
            }
            list.add(v);
            list.remove("2");
        }
        for (int i = 0; i < list.size(); i++) {
            System.out.print(" ");
            System.out.print(list.get(i));
        }
    }
}

list.remove("2");の部分でremoveメソッドで2を削除すると書いたのですが、2が表示されてしまいます。どのように修正したらよいでしょうか?
ご教示していただきたいです。

回答イメージですが
0~10の値を出力:2
0~10の値を出力:9
0~10の値を出力:11
0~10の値を出力:3
0~10の値を出力:2
0~10の値を出力:5
0~10の値を出力:2
0~10の値を出力:0 ← 0が出たら、出力を終える

9 11 3 5
上記のような表記にしたいです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+3

list.remove("2")だと文字列としての2を除去しようとしています。
ここで2の型はIntegerを想定しているので、引数をInteger.valueOf(2)にすれば上手くいきます。


こんなやり方も。Wandbox

System.out.println(
    new Random().ints(0, 11)
        .takeWhile(i -> i != 0)
        .filter(i -> i != 2)
        .mapToObj(String::valueOf)
        .collect(Collectors.joining(" "))
);

慣れるまではお勧めしないですが。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/09/17 19:36

    Loutis様:ありがとうございます。まだまだ初心者なので、難しいコードですがこのような書き方もあるのかと勉強になりました。本当にありがとうございます。

    キャンセル

+3

Javaなど不要。そう、シェル芸ならね!

$ while :;do echo $(($RANDOM % 10));done|while read n;do echo $n;[ $n -ne 2 ]&&s=$s" "$n;[ $n -eq 0 ]&&echo $s&&break;done
3
3
5
2
2
1
7
2
7
6
5
0
3 3 5 1 7 7 6 5 0

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/09/17 19:27

    hichon様:参考にさせていただきます。ありがとうございます。

    キャンセル

+1

3通りの方法を書いてみました。

           //追加しない
            if (v != 2) {
                list.add(v);
            }

            //削除する
            list.remove(Integer.valueOf(2));
        }
        for (int i = 0; i < list.size(); i++) {
            System.out.print(" ");

            //出力しない
            int ans = list.get(i);
            if (ans != 2) {
                System.out.print(ans);
            }

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/09/17 18:32

    2番目の方法は複数の2を削除できません。
    removeIfを使うのが妥当かと。

    キャンセル

  • 2018/09/17 19:20

    ありがとうございます。
    なるほどまとめて削除出来るのですね便利そうです。

    このコードで書いた時は意味あるかどうかは別としてadd()で追加した直後に削除すれば実質登録しないのと同義だと思いました。

    キャンセル

  • 2018/09/17 19:33

    opyon様:ありがとうございます。いろいろな書き方があるのですね。私一人では思いつかなかったので勉強になりました。本当にありがとうございます。感謝申し上げます。
    swordone様:迅速な対応ありがとうございます。コードがまだまだ読めないので説明してくださって勉強になります。ありがとうございます。

    キャンセル

同じタグがついた質問を見る

  • Java

    15822questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • ArrayList

    104questions

    Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

  • トップ
  • Javaに関する質問
  • 0から10までの乱数を発生させてその値を表示し、0が出たら、それまで出力した整数の中から2を除いた数を選んで表示、2の入った要素をremove()メソッドで削除してから表示プログラムを作りたい