繁体   English   中英

用字符JAVA替换字符串的一部分

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM