【发布时间】:2020-06-13 09:44:44
【问题描述】:
我正在尝试开发一个刽子手作为一项作业,但无法从文本文件中获取一个随机单词(其中包含各种单词,每个单词用空格分隔)。我编写了一个代码来获取一个随机单词,但无法选择一个单词并将其替换为我在“Function()”中的示例字符串 (String w = "this";)。
public String randomWord(String wordran) {
try {
BufferedReader reader = new BufferedReader(new FileReader("C:\\Users\\Admin\\Documents\\NetBeansProjects\\Main\\words.txt"));
String line = reader.readLine();
List<String> words = new ArrayList<String>();
while (line != null) {
String[] wordline = line.split(" ");
for (String word : wordline) {
words.add(word);
}
Random rand = new Random();
String randomWord1 = words.get(rand.nextInt(words.size()));
//System.out.println("rand word : " + randomWord1);
}
reader.close();
} catch (Exception e) {
}
return wordran;
}
public void function(){
int numGuesses = 10;
String w = randomWord();
String[] word = w.split("");
ArrayList< String> wList = new ArrayList<>(Arrays.asList(word));
ArrayList< String> wAnswer = new ArrayList< String>(wList.size());
for (int i = 0; i < wList.size(); i++) {
wAnswer.add("_ ");
}
int left = wList.size();
Scanner scanner = new Scanner(System.in);
boolean notDone = true;
ArrayList< String> lettersGuessed = new ArrayList< String>();
while (notDone) {
System.out.println();
String sOut = "";
List< String> lettersLeft = getRemainingLetters(lettersGuessed);
for (String s : lettersLeft) {
sOut += s + " ";
}
System.out.println("Letters Left: " + sOut);
sOut = "";
for (int i = 0; i < wList.size(); i++) {
sOut += wAnswer.get(i);
}
System.out.println(sOut + " Guesses left:" + numGuesses);
System.out.print("Enter a letter(* exit): ");
String sIn = scanner.next();
numGuesses--;
if (sIn.equals("*")) {
break;
}
lettersGuessed.add(sIn);
for (int i = 0; i < wList.size(); i++) {
if (sIn.equals(wList.get(i))) {
wAnswer.set(i, sIn);
left--;
}
}
if (left == 0) {
System.out.println("Congradulations you guessed it!");
break;
}
if (numGuesses == 0) {
System.out.println("You failed...:(");
break;
}
}
}
public static void main(String[] args) throws IOException {
Main ma = new Main();
ma.function();
loadWords();
// ma.randomWord();
}
【问题讨论】:
-
提示:如果
void randomWord()方法被定义为String randomWord()会很有帮助,这样您现在就可以在function()中写入String w = randomWord();。 -
@Kevin 正如你所提到的,我已将其更改为“public String randomWord()”,并返回一个空值并写入“String w = randomWord();”在'function()'里面。但由于某种原因,它没有运行的代码。
-
你能比“不跑步”更具体一点吗?另外,请更新此帖子以显示您所做的代码更改。
-
@KevinAnderson,我已经用更改更新了上面的代码。
-
好吧,我明白为什么它不起作用了。如果
randomWord定义为String randomWord(String wordran),那么在调用它时必须传递String参数,如String w = randomWord(someStringVariableOrLiteral);。如果您只是将其保留为String randomArgument(),那么String w = randomWord();就可以了。所以现在你需要问自己“为什么我要在randomWord中添加String参数,这是一个以前没有的参数,而且在没有它的情况下总是相处得很好?”
标签: java arrays arraylist random