こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

読み込んだ行からランダムに選ぶ

外部テキストからBufferedReaderで読み込んだ行をStringTokenizerで * の前と後ろに分けて、
nichi ="" + st.nextToken();
ei ="" + st.nextToken();
というように取得しています。

これをsetTextメソッドで文字列として表示しているのですが、順に読み込んだ中からランダムに選ぶ場合はどうすれば良いでしょうか


import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;

public class examination extends Applet implements ActionListener{
Button Check, Next;
TextField jap, eng, seigo;
String wrs;
String nichi, ei;

public void init(){
setBackground(new Color(200, 200, 200));
add(new Label("[ japanese ]"));
jap = new TextField("", 30);
add(jap);
add(new Label("[ english ]"));
eng = new TextField("", 30);
add(eng);
Check = new Button("正誤判定");
Check.addActionListener(this);
add(Check);
seigo = new TextField("", 3);
add(seigo);
Next = new Button("次の問題へ進む");
Next.addActionListener(this);
add(Next);
}

public void actionPerformed(ActionEvent e){
try{
if(e.getSource() == Next){
BufferedReader wordsfile = new BufferedReader(new FileReader("D:/list.txt"));
while ((wrs=wordsfile.readLine())!= null){
StringTokenizer st = new StringTokenizer(wrs," * ");
nichi ="" + st.nextToken();
ei ="" + st.nextToken();
jap.setText(nichi); ←
}
wordsfile.close();
}(以下省略)

←の部分ですが、このままだと最後に読み込んだ行のnichiが表示されますよね?
これを読み込んだ中からランダムに一行選んで表示するにはどうすれば良いでしょうか。

投稿日時 - 2010-01-11 17:22:43

QNo.5585330

すぐに回答ほしいです

質問者が選んだベストアンサー

全行をArrayListに収めておいて、乱数で取り出す行を決める。
なお、StringTokenizerは、古い、非推奨のAPIなので、Stringクラスのsplit()メソッドを代わりに使ってください。

投稿日時 - 2010-01-11 18:14:20

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問