- ベストアンサー
ランダム表示
いくつかの文章を登録し、そのいくつかの文章からランダムで数個選び表示させることができるというプログラムを作らなければならないのですが、かなり苦戦しています。教えてください。お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
//配列版 import java.util.Random; class SampleA { public static void main(String args[]){ Random rnd = new Random(); String [] v = new String[10]; int size=0; // 適当に文章を登録する v[size++]="古池や"; v[size++]="蛙飛び込む"; v[size++]="水の音"; v[size++]="朝顔に"; v[size++]="つるべとられて"; v[size++]="もらい水"; v[size++]="柿食えば"; v[size++]="鐘が鳴るなり"; v[size++]="法隆寺"; int i=0; while(i<3){// 3個ランダムに表示 int no=rnd.nextInt(size); if(v[no]!=null){ System.out.println(v[no]); v[no]=null; //表示したモノは初期化 i++; } } } }
その他の回答 (3)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>ここの部分の<>の扱い方でどうしてもエラーが出るのですが、どういうことでしょうかね? 多分、java1.4を使っているからでしょうね。 <String>を削除して、 System.out.println を使うといいと思います。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#1の方針でサンプルを作ってみました。java1.5用 ---------------------------------------------- import java.util.*; class Sample { public static void main(String args[]){ Random rnd = new Random(); Vector<String> v = new Vector<String>(); // 適当に文章を登録する v.add("古池や"); v.add("蛙飛び込む"); v.add("水の音"); v.add("朝顔に"); v.add("つるべとられて"); v.add("もらい水"); v.add("柿食えば"); v.add("鐘が鳴るなり"); v.add("法隆寺"); for(int i=0;i<3;i++){// 3個ランダムに表示 //表示したモノは削除 System.out.printf("%s%n", v.remove(rnd.nextInt(v.size()))); } } }
お礼
続けての回答本当にありがとうございます。 とても参考になりました。 Vector<String> v = new Vector<String>(); ここの部分の<>の扱い方でどうしてもエラーが出るのですが、どういうことでしょうかね? 是非、実行してみたいのですが…
補足
Vectorの使い方にけっこう戸惑いがあります 配列を使うことでできそうであれば、配列を使った例も載せていただけると有難いです
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
配列とかVector に文章を登録しておいて、 登録サイズを使って Random#nextInt(登録サイズ); を使って適当に配列から取り出す様にすればいいんじゃないでしょうか 同じものが選ばれるとマズイ場合は、Vectorで削除するとか・
お礼
回答本当にありがとうございました。 しかし、初心者なもので、どうしていいものかよくわからないです。 もう少し、詳しい説明があると有難いのですが… かなり困っています。。。
お礼
配列の方まで書いていただき、本当にありがとうございます!! とても参考になりました!