在java中如何在数组中随机化和int

时间:2016-03-26 18:52:42

标签: java random

嗨,我只是在学习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.");

如果有人可以帮我解决这个问题会很好。

2 个答案:

答案 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);
   }