Java 用另一个ArrayList中的随机字符串替换ArrayList中的特定字符串
我对java编程相当陌生(几个月前才开始),不幸的是,我现在有点困惑 我目前正在使用BlueJ进行编程,我在书中遇到了一个练习,在掌握如何进一步添加所需功能方面确实存在一些问题 这个练习有两个以前创建的类(ReaderInput和WriterOutput),我将创建一个新类,该类调用并使用前面的类方法。这个练习包括两个.txt文件,一个包含一个故事,第二个包含不同种类的形容词(单词)。然后,我必须读取story.txt文件,并将该文件中的字符串替换为一个特定的值(值为“形容词”的字符串),然后从approxes.txt文件中随机选择单词,最后将它们输出(写入)到一个全新的文件中 story.txt文件中的示例: “从前,有一个形容词女孩和很多形容词朋友一起过着形容词生日等等……” 形容词.txt文件中的示例: 发牢骚 古老的 小的 愚蠢的 等等 因此,我创建了一个新类,添加并初始化ReaderInput类的新字段对象,如下所示Java 用另一个ArrayList中的随机字符串替换ArrayList中的特定字符串,java,string,file,arraylist,filereader,Java,String,File,Arraylist,Filereader,我对java编程相当陌生(几个月前才开始),不幸的是,我现在有点困惑 我目前正在使用BlueJ进行编程,我在书中遇到了一个练习,在掌握如何进一步添加所需功能方面确实存在一些问题 这个练习有两个以前创建的类(ReaderInput和WriterOutput),我将创建一个新类,该类调用并使用前面的类方法。这个练习包括两个.txt文件,一个包含一个故事,第二个包含不同种类的形容词(单词)。然后,我必须读取story.txt文件,并将该文件中的字符串替换为一个特定的值(值为“形容词”的字符串),然后从
private ReaderInput reader;
private WriterOutput writer;
private Random random;
public StoryCreator()
{
reader = new ReaderInput();
writer = new WriterOutput();
random = new Random();
}
然后,我创建了一个名为create形容词story的新方法,并使用参数指定故事文件名和形容词
public void createAdjectiveStory(String storyFilename, String adjectivesFilename/*, String outputFilename*/)
然后,我声明两个变量来保存ReaderInput类中的reader字(指定要通过参数读取的文件):
在if语句中,我尝试使用replaceAll函数,如下所示:
Collections.replaceAll(story,wordToChange,word);
这里的问题是,如果我试图打印出来(只是为了验证它是否有效),我会得到以下结果:
“从前,有一个老女孩和许多老朋友一起过生日,等等……”
现在我想要这个
“从前,有一个老姑娘,她出生那天和许多愚蠢的朋友在一起,哭哭啼啼……”
我尝试使用.replace函数,如下所示:
Collections.replace(story,wordToChange,word);
但我在指定“找不到符号-方法替换”时出错
我被困在这里,似乎找不到解决这个问题的正确方法。Ayone对此有什么建议/窍门或解决方案吗
新程序员需要在正确的方向上“推动”。任何帮助都将受到高度赞赏:)问题在于,它选择的单词将其更改为一次,然后replaceAll将立即替换REPLACE的每个实例 相反,您应该在for循环中使用迭代器:
Iterator<String> i=story.iterator();
while (i.hasNext()) {
String check = i.next();
if (check.equals(stringToReplace)) {
i.set(getRandomAdjective());
}
}
Iterator i=story.Iterator();
while(i.hasNext()){
字符串检查=i.next();
如果(检查等于(stringToReplace)){
i、 set(getrandom形容词());
}
}
您应该为代码创建一个方法来获取随机形容词。您得到的错误是因为它不是一个有效的方法。您在这里遇到了一个概念问题。要替换的词,即形容词,需要两个词:旧词和新词。那些是从哪里来的?作为
列表
您只有一个单词。我会和你的老师核实第二个文件的格式,它可能每行有两个单词或者类似的东西。谢谢Tim B!现在工作得很漂亮:)
Collections.replace(story,wordToChange,word);
Iterator<String> i=story.iterator();
while (i.hasNext()) {
String check = i.next();
if (check.equals(stringToReplace)) {
i.set(getRandomAdjective());
}
}