- ベストアンサー
コンパイルできません
2から150の中から数字を30個取得する。というのを2回繰り返します。そして、その2回とも両方に現れた数字だけを表示させたいのですが、自分が作成したプログラムではうまくコンパイルできませんでした。シンボルを解釈処理できません。互換性のない型。というエラーが出てしまいます。ここが間違っているなどアドバイス等お願いしますm(_ _)m import java.util.*; public class RandomTest { public static void main(String[] args) { Random generator = new Random(); //2から150の中から値が30個表示される for(int i=0; i<30; i++){ int ran = (int)(Math.random() * 148)+2; } for(int j=0; j<30; j++){ int ran2 = (int)(Math.random() * 148)+2; } int ran3 = ran && ran2; System.out.println(ran3); } }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>int ran3 = ran && ran2; エラーはたぶんここ。&&は論理型にしか使えないので。 ところで、このプログラムでは想定の通りに動作しません。 「数字を30個取得する」ではなくて、 「数字を30回取得し直す。前の数字は上書きされる」 となってます。 結局、ranとran2の2個の数字を得ただけです。 30個取るには、得られた数値を配列に保存しないといけません。
その他の回答 (2)
- kou2000
- ベストアンサー率29% (14/48)
そもそも実現しようとしていることと実際組んでるプログラムが違いますよ~! >2から150の中から数字を30個取得する。というのを2回繰り返します。そして、その2回とも両方に現れた数字だけを表示させたい ということなのでまず配列を使わないとダメですね。今のものだと常に最後のひとつしか保存されていません。 あとint型で&&は使用できないとおもいます。
お礼
はい、intで使用できないみたいです(^^;がんばってみます。
- hana-hana3
- ベストアンサー率31% (4940/15541)
>int ran3 = ran && ran2; ここで、論理演算子(&&)が使われているので、受け取る型が合わないと思います。(true/false) 比較は、if文で行うのが普通だとおもいます。 ran,ran2 はfor文の中で使われているので、for文が終了すると共に、無効になるのでは? >数字を30個取得する >その2回とも両方に現れた数字 と言う条件では、このプログラムは満たしていないような。。。 初めの30個と後の30個が比較される訳ですよね? このプログラムの書き方だと、最初の30個目と最後の30個目しか比較できません。
お礼
コマンドプロンプトに表示させたところ、いっきに30個の数字が表示されるのでいっきに30個取得できているのだと勘違いしていました(^^;1個ずつ30回だったんですね。
お礼
回答ありがとうございます!!そうですね、ひとつの数値を30回取得するってことですね。配列を使用しないといけないんですねぇ(^^;