-1

可能重复:
Java RandomString 类

以下是方向:

创建一个RandomString类并实现以下内容:

  1. 创建一个名为guess_phrases.txt 的文件,其中包含要在Hangman 游戏中猜测的短语。该文件每行有一个猜测短语。

  2. 接收文件名以从中获取字符串值的构造函数。构造函数应该从文件中读入短语并将它们存储起来以备后用。

  3. 从文件中返回随机字符串值的方法;在使用文件中的所有猜测短语之前,不应重复此值。

创建一个 main 方法,通过重复调用 next 并打印结果来测试 next 是否正常工作——您不应有任何重复,并且短语不应与文件中的顺序相同。

我用随机短语创建了一个名为guess_phrases.txt的文件。当我运行这个我得到一个错误,它也不是随机打印的,这是为什么?我怎样才能解决这个问题 ?

线程“main”java.lang.IllegalArgumentException 中的错误异常:n 必须为正

at java.util.Random.nextInt(Unknown Source)
at RandomString.next(RandomString.java:32)
at RandomString.main(RandomString.java:40)

这就是我在 RandomString 类中所拥有的

public class RandomString {

    Random random = new Random();
    ArrayList<String> guessPhrases = new ArrayList<String>();
    Scanner fileScan;

    public RandomString(String guessPhrases) throws FileNotFoundException {

        // create a Scanner object to read from the file
        fileScan = new Scanner(new File("guess_phrases.txt"));

        // add all of the phrases from the file into the ArrayList
        while (fileScan.hasNext()) {

            String line = guessPhrases.nextLine(); // get input
            System.out.println(line); // print line
            guessPhrases.add(line); // add line to array list
        }
    }

    public String next() {
        int i = random.nextInt(guessPhrases.size());
        return guessPhrases.get(i);
    }

    public static void main(String[] args) {

    }
}
4

1 回答 1

0

随机 API

你可以看到,如果你将一个负数或零传递给 nextInt(pos) 它将抛出一个IllegalArgumentException

        int i = random.nextInt(guessPhrases.size());

绝对guessPhrases.size(),因此是异常

于 2012-12-11T10:33:58.050 回答