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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

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

ArrayList

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

Q&A

解決済

3回答

2825閲覧

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

ssssa

総合スコア39

Java

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

ArrayList

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

0グッド

1クリップ

投稿2018/09/17 09:02

編集2018/09/17 09:08

Java

1public static void main(String[] args) { 2 List<Integer> list = new ArrayList<Integer>(); 3 while (true) { 4 Random rnd = new Random(); 5 int v = rnd.nextInt(10); 6 System.out.println("0から10の値を出力:" + v); 7 if (v == 0) { 8 break; 9 } 10 list.add(v); 11 list.remove("2"); 12 } 13 for (int i = 0; i < list.size(); i++) { 14 System.out.print(" "); 15 System.out.print(list.get(i)); 16 } 17 } 18} 19

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
上記のような表記にしたいです。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

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

bash

1$ 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 23 33 45 52 62 71 87 92 107 116 125 130 143 3 5 1 7 7 6 5 0

投稿2018/09/17 10:24

hichon

総合スコア5737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssssa

2018/09/17 10:27

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

0

ベストアンサー

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


こんなやり方も。Wandbox

Java

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

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

投稿2018/09/17 09:09

編集2018/09/17 09:30
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssssa

2018/09/17 10:36

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

0

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

java

1 2 //追加しない 3 if (v != 2) { 4 list.add(v); 5 } 6 7 //削除する 8 list.remove(Integer.valueOf(2)); 9 } 10 for (int i = 0; i < list.size(); i++) { 11 System.out.print(" "); 12 13 //出力しない 14 int ans = list.get(i); 15 if (ans != 2) { 16 System.out.print(ans); 17 } 18

投稿2018/09/17 09:28

opyon

総合スコア1009

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2018/09/17 09:32

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

2018/09/17 10:20

ありがとうございます。 なるほどまとめて削除出来るのですね便利そうです。 このコードで書いた時は意味あるかどうかは別としてadd()で追加した直後に削除すれば実質登録しないのと同義だと思いました。
ssssa

2018/09/17 10:33

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問