我知道我之前在这里问了类似的问题,但我想我已经缩小了我想要的范围。 好的,所以我正在制作一个在jedit控制台上玩刽子手游戏的程序。用户将一次猜出一个角色。在游戏开始时,程序将显示与他们猜测的单词长度相同的星号。它们与单词中的字母一样多的猜测。当他们得到一个正确的字母时,程序将显示字母代替星号。这是一个控制台应该是什么样子的例子。
如果这个词是作业 ********
他们猜测字母e *** e **** (大胆的e刚发生,因为星星这样,它不需要加粗)
然后他们猜这封信h h ** e ****等,直到没有星号
所以我创建了一个方法,根据单词中的字母数打印出星号的数量。我不知道如何将字母放在星号的位置。我想知道我是否应该制作一个替代星号的方法,或者我怎么做才能解决这个问题。提前感谢您的帮助。
p.s我不是要求任何人将代码转储给我,这不是我想要的。只是得到帮助,我有人就我不理解的事情提出问题会很好。顺便说一句,我是计算机科学课程的入门者,所以我对java的了解相当低。
答案 0 :(得分:0)
有很多方法可以解决这个问题。突然出现在我脑海中的第一个问题是你可以从一个与答案字符串长度相同的char []开始。查找Arrays类,以便用星号填充它。当用户猜出字母时,搜索该字母的答案字符串并替换char []的相应索引。然后从char []构造一个String并显示它。
答案 1 :(得分:0)
为什么不做一些更聪明的事情,列出目前为止所有chars
猜测的列表,每次打印单词时,只需查看每个字母,如果不在集合中则替换为*。 / p>
简短:到目前为止做出一系列猜测。您不必在显示用户时使用相同的数据结构。
答案 2 :(得分:0)
对于 **** ,我会使用字符列表而不是字符串。
List<Character> hiddenWord = new ArrayList<Character>();
使用您需要的数字*实例化列表。
创建一个接收猜测字母的函数。
检查单词是否包含该字母(重复使用indexOf(int ch,int fromIndex)直到得到-1 - 读取它here),并且对于每个结果,你得到的是!= - 1,设置位置在数组中是那个字母(类似hiddenWord.set(poz, letter)
,其中poz是indexOf的结果,字母是猜测的字母)。
答案 3 :(得分:0)
您可以使用StringBuffer insead String。在类StringBuffer中存在方法setCharAt。
很简单,你会有变量String word
- 用于猜词,而StringBuilder guess
用于星号和猜测字母。猜到信后,您将使用setCharAt更新guess
。