我想用Java创建一个刽子手游戏,但我不确定如何设置整个游戏。我正在开发一个系统,他们拥有的信件越多,他们出现在刽子手难题上的机会就越少。
import java.ultil.Scanner;
public class Hangman {
public static void main(string[]args); // Let's try a main?
scr = newScanner(system.in); // used for keyboard input
string words = "Hi:Bye:Hello:Cheese:Puppies";
int length = words.length();
}
}
如何从变量“单词”中获取一个随机单词,并计算它的长度?
请记住,我不是最好的Java编码。
答案 0 :(得分:4)
这可以通过选择一个随机单词并查找其长度来回答该部分。
String words = "Hi:Bye:Hello:Cheese:Puppies";
String[] wordsAsArray = words.split(":");
int index = new Random().nextInt(wordsAsArray.length);
String randomWord = wordsAsArray[index];
System.out.println("Random word: '" + randomWord + "'. It is of length: " + randomWord.length());
答案 1 :(得分:3)
如果您想要使用计数最高的单词,那么您的问题不应该是一个随机单词。它应该是关于按长度排序单词,然后从前N个最长单词中选择一个随机单词
创建一个数组并添加你的单词
StringTokenizer tokenizer = new StringTokenizer("Boy:Chicken:mango", ":");
String [] words = new String [tokenizer.countTokens()];
int counter =0;
while (tokenizer.hasMoreElements()) {
String word = (String) tokenizer.nextElement();
words[counter] = word;
counter++;
}
如果您想选择计数最高的单词,请按最高计数对单词进行排序。
您可以放置在hashmap中,然后迭代选择具有最高
的那些HashMap<String, Integer> count = new HashMap<String, Integer>();
for (String word : words) {
if (!count.containsKey(word)) {
count.put(word, word.length());
}
}
选择一个随机词
Random numGen= new Random();
String word = words [numGen.nextInt(words.size)];
对于实际有效的排序,你需要为单词编写自己的比较器(基于长度,但首先是更长的单词),然后创建一个PriorityQueue,在那里添加单词,当你删除()时你我会得到最长的单词。
答案 2 :(得分:1)
String words = "Hi:Bye:Hello:Cheese:Puppies";
String[] wordsSplit = words.split(":");
然后随机化结果数组。但正如其他人所指出的那样,你最好从一系列词开始。
请参阅文档:http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split%28java.lang.String%29
你有语法错误。获取IDE。
答案 3 :(得分:1)
要获得任何给定String
的长度,请使用:
string.length();
为了得到一个随机单词(并且每个单词根据其长度有不同的出现机会),首先你需要将你的单词添加到某种列表中,如下所示:
ArrayList<String> words = new ArrayList<String>();
words.add("word");
words.add("word2");
words.add("etc");
以下方法将从列表中返回一个随机单词。单词越长,被选中的机会就越少:
String selectRandomWord(ArrayList<String> words){
int lengthOfLongestWord = 200;
List<Integer> wordsTimesLength = new ArrayList<Integer>();
for (int i = 0;i<words.size();i++){
for (int e = 0;e<Math.pow(words.get(i).length,-1)*lengthOfLongestWord;e++){
wordsTimesLength.add(i);
}
}
int randomIndex = generator.nextInt(wordsTimesLength.size());
return words.get(wordsTimesLength.get(randomIndex));
}
请注意,如果您的单词超过200个字符,则需要更改lengthOfLongest
(我认为除了以下情况之外没有任何单词)。要使用该方法,您可以简单地调用它:
selectRandomWord(words);
答案 4 :(得分:0)
这里有一些代码可以用于你想要做的事情:
public class Hangman {
public static void main(String[] args) {
Scanner scr = new Scanner(System.in); //Used for keyboard input
List<String> words = new ArrayList<String>(); {
words.add("Hi");
words.add("Bye");
words.add("Hello");
words.add("Cheese");
words.add("Puppies");
}
Random numberGenerator = new Random(); //Creates Random object
int randomNum = numberGenerator.nextInt(words.size()); //Return a num between 0 and words.size()-1
System.out.println(randomNum); //Prints the random number outputted by the generator
System.out.println(words.get(randomNum)); //Retrieves the String located at the index value
System.out.println(words.get(randomNum).length()); //Returns the size of the words
}
}