[英]Replacing parts of a string with characters JAVA
我知道我早些时候在这里问过类似的问题,但我想我已经缩小了要问的范围。 好的,所以我正在制作一个在jedit控制台上玩hangman游戏的程序。 用户一次将猜一个字符。 在游戏开始时,程序将显示与猜中的单词相同长度的星号。 他们的猜想与单词中的字母一样多。 当他们收到正确的字母后,程序将显示字母代替星号。 这是控制台外观的示例。
如果单词是家庭作业********
他们猜出字母e *** e **** (大胆的e刚发生是因为星星,所以它不需要大胆)
然后他们猜到字母hh ** e ****
以此类推,直到不再有星号为止
因此,我创建了一种根据单词中字母的数量打印出星号数量的方法。 我不知道如何将字母放在星号处。 我想知道是否应该制定一种替代星号的方法,否则我将如何解决这个问题。 预先感谢您的帮助。
ps我不是要任何人向我转储代码,这不是我想要的。 只要有帮助,让我问一些我不了解的事情就会很好。 顺便说一下,我是计算机科学入门课程,所以我对Java的了解还很低。
您可以采用多种方法来解决此问题。 首先出现在您脑海中的是,您可以以与答案字符串相同长度的char []开头。 查找Arrays类,以简单的方法用星号填充它。 当用户猜出字母时,请在答案字符串中搜索该字母并替换char []的相应索引。 然后从char []构造一个String并显示它。
为什么不做些更聪明的事情,列出到目前为止所有可能猜到的chars
,并且每当您要打印该单词时,只需遍历每个字母,然后将其替换为*(如果不在集合中)。
简短:到目前为止,进行所有猜测。 您不必像显示给用户一样使用相同的数据结构。
我会用一个字符列表代替****的String。
List<Character> hiddenWord = new ArrayList<Character>();
用所需的*实例化列表。
创建一个将接收猜字母的函数。 检查单词中是否包含该字母(重复使用indexOf(int ch,int fromIndex),直到得到-1- 在此处阅读),对于得到的每个结果,都等于!=-1,将数组中的位置设置为是那个字母(类似于hiddenWord.set(poz, letter)
,其中poz是indexOf的结果,而letter是猜测的字母)。
您可以使用StringBuffer insead String。 在StringBuffer类中,存在方法setCharAt 。 简而言之,您将拥有可变的String word
-用于猜测单词,而StringBuilder guess
用于星号和猜测的字母。 猜字母时,将使用setCharAt更新guess
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.