2つのテキストファイルを読み込むプログラムを作成しようとしていますが、両方とも数千語の単語が含まれています。私は、各ファイルから無作為に10語を選択し、4つの文字列リストの配列に格納する必要があります。これまでに以下のコードを作成しましたが、これは各ファイルから1つの単語しか選択するのではなく、10を選択します。これはどのようにして行うことができますか?ランダムにテキストファイルから10ワードを選択してください
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class RandomWordGenerator {
public static void main(String[] args) throws FileNotFoundException {
public class RandomWordGenerator {
public static void main(String[] args) throws IOException {
Path outputFile = Paths.get("output.txt");
ArrayList<String> randomWords1 = randomWordsFromFile("textfile1.txt", 10);
ArrayList<String> randomWords2 = randomWordsFromFile("textfile2.txt", 10);
OutputStream outputStream = new BufferedOutputStream(Files.newOutputStream(outputFile, CREATE));
System.out.println(randomWords1);
System.out.println(randomWords2);
outputStream.flush();
for (int i = 0; i < randomWords1.size(); i++) {
outputStream.write(randomWords1.get(i).getBytes());
}
for (int i = 0; i < randomWords2.size(); i++) {
outputStream.write(randomWords2.get(i).getBytes());
}
outputStream.close();
}
private static ArrayList<String> randomFromFile(String fileName, int count) throws FileNotFoundException {
Scanner scanner = new Scanner(new File(fileName));
ArrayList<String> words = new ArrayList<>();
while (scanner.hasNext()) {
words.add(scanner.next());
}
return randomFromWords(words, count);
}
static private ArrayList<String> randomFromWords(ArrayList<String> words, int count) {
ArrayList<String> randomWords = new ArrayList<>();
for (int i = 0; i < count;) {
int random = new Random().nextInt(words.size());
if (randomWords.add(words.get(random))) {
i++;
}
}
return randomWords;
}
}
上記のコードの代わりにこれがありますか?コード上の – NoahSM1993
はランダムな文字列を与えておらず、正確なカウント数を与えていませんでした。私が投稿したコードは両方とも実行します –
バイナリファイルで2つのリストをどのようにシリアライズしますか?上のプログラムはランダムに10単語を選んで印刷しますが、実際には単語を格納しません。 – NoahSM1993