嗨,我只是在学习java,想写一种词汇训练师。它工作正常,但我想以随机顺序提出问题。培训师从外部文件中查找列表,并将文件分为两部分。它要求下一行不是空的。
for (int i = 0; (zeile = br.readLine()) != null; i++) {
splitted = zeile.split(";");
eng[i] = splitted[0];
ger[i] = splitted[1];
然后我要求词汇量。但正如你可以看到它总是以相同的顺序。我不知道如何在询问部分之前正确地将列表随机化。
for (int j = 0; j < eng.length; j++) {
correct = false;
while (!correct) {
System.out.print(eng[j] + " bedeutet: ");
gerEingabe = vokabel.nextLine();
if (gerEingabe.equals(ger[j])) {
System.out.println("Das ist Korrekt. Auf zur nächsten Aufgabe.");
correct = true;
} else {
System.out.println("Das war leider Falsch. Bitte versuche es noch ein mal.");
如果有人可以帮我解决这个问题会很好。
答案 0 :(得分:0)
要随机化List
,请致电Collections.shuffle(List<?> list)
。
要获取定义范围内的随机整数,请使用Random.nextInt(int n)
:
Random rnd = new Random();
int val = rnd.nextInt(11) + 5; // Random number 5-15 (inclusive)
答案 1 :(得分:0)
创建一个包含翻译对象的小类。例如。类似下面的内容
public class Translation {
public final String originalWord;
public final String translatedWord;
public Translation(String original, String translated) {
this.originalWord = original;
this.translatedWord = translated;
}
}
然后将您的翻译添加到ArrayList<Translation>
并利用Collections.shuffle
随机化排序。
List<Translation> list = new ArrayList<>();
while((zeile = br.readLine()) != null) {
splitted = zeile.split(";");
list.add(new Translation(splitted[0], splitted[1]));
}
然后在开始时,进行洗牌。
Collections.shuffle(list);
迭代可以通过索引以及list.get()
完成,您只需要调整其余代码以使用Translation
对象:
for (int j = 0; j < list.size(); j++) {
Translation t = list.get(j);
System.out.print(t.originalWord + " bedeutet: " + t.translatedWord);
}