我正在做一个刽子手项目。现在,我在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和列表大小之间的随机数,然后获取该项,然后删除该项,然后返回该项
答案 0 :(得分:1)
获取随机数:Math.Random
施放到int
并乘以列表中的多少项目和10。
例如
int abc=(int) (Math.random()*60);
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;
}
}
尽力而为。