如何获取Array List的随机单词?

时间:2011-12-03 06:02:50

标签: java arraylist

我正在做一个刽子手项目。现在,我在TXT文件中有一个单词列表。我有一个RandomString课,我需要使用它。我正在研究Next方法并且卡住了。这就是我所拥有的:

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class RandomString {
    private String filename;
    private ArrayList<String> phrases;

    public RandomString(String filename) {
        this.filename = filename;
        reset();
    }

    public void reset() {
        phrases = new ArrayList<String>();

        try {
            Scanner scan = new Scanner(new File(filename));
            while (scan.hasNext()) 
                phrases.add(scan.nextLine());
            scan.close();
        }
        catch (Exception e){}
    }

    public String next() {
        if (phrases.isEmpty())
            reset();
    }
} 

我的下一个方法需要:查看ArrayList是否为空并且是否重置,然后获取0和列表大小之间的随机数,然后获取该项,然后删除该项,然后返回该项

2 个答案:

答案 0 :(得分:1)

获取随机数:Math.Random施放到int并乘以列表中的多少项目和10。

例如

  • 列表中的6个项目int abc=(int) (Math.random()*60);
  • 4项,int abc=(int) (Math.random()*40);

但我不明白你的其余问题

或者您可以使用java.util.random

答案 1 :(得分:1)

我的第一个意图是评论你的编码风格。这很糟糕,所以如果有必要,请务必在向别人询问时提出意见。

其他事情是制作/发布完整的内容,例如。块如if |带有结束和左括号的else语句。

我猜您需要根据内容从数组列表中随机获取项目。如果是这样,您可以了解如何做到这一点。此代码将转到您未完成的其他条件的内容。

这里是您的问题的答案,请遵循此处使用的一些通用标准,以使您的代码更易于理解(无论您在何处撰写 - 公司,帖子,博客等)。

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class RandomString {
    private String filename;
    private ArrayList<String> phrases;
    // Random number generator instance
    Random randomGenerator = new Random();

    public RandomString(String filename)

    {
        this.filename = filename;
        reset();
    }

    public void reset() {
        phrases = new ArrayList<String>();

        try {
            Scanner scan = new Scanner(new File(filename));
            while (scan.hasNext())
                phrases.add(scan.nextLine());
            scan.close();
        } catch (Exception e) {
        }
    }

    public String next() {

        // Value retrieved from array-list
        String item = null;
        // Index to be read from array-list
        int index = 0;

        // Reset the array-list if is it empty
        if (phrases.isEmpty()) {
            reset();
        }

        // Check the size, there is a possibility to have zero elements in your stored file
        if (phrases.size() > 0) {

            if (phrases.size() > 1) {
                // Get a random number
                index = randomGenerator.nextInt(phrases.size());
            } else {
                // If the array-list has only one item there is no need to get a random number.
                index = 0;
            }
            // Get the indexed item
            item = phrases.get(index);
            // Remove item
            phrases.remove(index);

        }

        // Return the item
        return item;
    }
}

尽力而为。