问题描述
以下是方向:
创建一个 RandomString
类,并执行以下操作:
-
创建一个名为guess_phrases.txt的文件,其中包含您的Hangman游戏中要猜到的短语。该文件每行将有一个猜测短语。
-
一个构造函数,它接收文件的名称以获取字符串值。构造函数应该从文件中读取短语并存储以备以后使用。
-
从文件返回随机字符串值的方法;这个值不应该重复,直到文件中的所有猜测短语都被使用为止。
创建一个主要方法测试下一个工作是否正确通过重复调用next&打印结果 - 您不应该有任何重复,短语不应该与文件中的顺序相同。
我创建了一个名为的文件guess_phrases带有随机短语的.txt 当我运行这个我收到一个错误,也不是随机打印,为什么这样?如何解决这个问题?
错误
线程main中的异常java.lang.IllegalArgumentException:n必须为正值
在java.util.Random.nextInt(未知来源)
在RandomString.next(RandomString.java:32)
在RandomString。 main(RandomString.java:40)
这是我在RandomString类中有的
public class RandomString {
/ pre>
随机随机= new Random();
ArrayList< String> guessPhrases = new ArrayList< String>();
扫描仪fileScan;
public RandomString(String guessPhrases)throws FileNotFoundException {
//创建一个Scanner对象从文件中读取
fileScan = new Scanner(new File(guess_phrases 。文本));
//将所有短语从文件添加到ArrayList
while(fileScan.hasNext()){
String line = guessPhrases.nextLine() ; // get input
System.out.println(line); // print line
guessPhrases.add(line); //添加行到数组列表
}
}
public String next(){
int i = random.nextInt(guessPhrases.size());
return guessPhrases.get(i);
}
public static void main(String [] args){
}
}
解决方案从
你可以看到,如果你将一个negetive数字传递给nextInt(pos),它会抛出一个 IllegalArgumentException
int i = random。 nextInt(guessPhrases.size());
绝对
guessPhrases.size()
是 / strong>,因此例外Here are the directions:
Create a
RandomString
class and implement the following:
Create a file named guess_phrases.txt that contains phrases to be guessed in your Hangman game. This file will have one guess phrase per line.
A constructor that receives the name of a file to get string values from. The constructor should read in the phrases from the file and store them for later use.
A method that returns a random string value from the file; this value shouldn't be repeated until all guess phrases in the file have been used.
Create a main method to test that next is working correctly by repeatedly calling next & printing the result – you should not have any repeats, and the phrases should not be in the same order as in the file.
I created a file called guess_phrases.txt with random phrases. When I run this I get an error, also it is not printed randomly, why is this? How can I fix this ?
error Exception in thread "main" java.lang.IllegalArgumentException: n must be positive
at java.util.Random.nextInt(Unknown Source) at RandomString.next(RandomString.java:32) at RandomString.main(RandomString.java:40)
This is what I have in the RandomString Class
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) { } }
解决方案From Random API
you can see that if you pass a negetive number or zero to nextInt(pos) it will throw an IllegalArgumentException
int i = random.nextInt(guessPhrases.size());
Most definitely
guessPhrases.size()
is zero, thus the Exception这篇关于HangMan RandomString类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!