HangMan RandomString类

时间:2012-12-11 10:29:05

标签: java eclipse

  

可能重复:
  Java RandomString Class

以下是指示:

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

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

  2. 一个构造函数,它接收要从中获取字符串值的文件名。构造函数应该读入文件中的短语并存储它们以供以后使用。

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

  4. 创建一个主要方法,通过反复调用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) {
    
        }
    }
    

1 个答案:

答案 0 :(得分:0)

来自Random API

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

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

绝大多数guessPhrases.size() ,因此异常