私はJavaプログラミングの新人です。私はちょうど学校で課題を持っています。少し苦労しています。下記のコードは、編集できる唯一のコードです。ArrayListを更新するには?
txtファイルで "ADJEKTIV"という単語を検索し、形容詞のみを含む別のtxtドキュメントのランダムな形容詞に置き換えることです。この部分は私が釘付けだと思う。しかし、私がOutputWriterと呼ばれる別のクラスの書き込みメソッドを使用しようとすると、新しい更新を "ADJEKTIV"を含む文字列に使用しないようです。変更を保存するために何とかArrayListを "更新"する必要がありますか?
import java.util.*;
/**
* Class documentation needed!
*/
public class StoryCreator
{
private InputReader reader;
private OutputWriter writer;
private Random random;
public StoryCreator()
{
reader = new InputReader();
writer = new OutputWriter();
random = new Random();
}
public String randomAdjective(String adjectivesFilename)
{
ArrayList<String> adjectives = reader.getWordsInFile(adjectivesFilename);
int index = random.nextInt(adjectives.size());
return adjectives.get(index);
}
public void createAdjectiveStory(String storyFilename, String adjectivesFilename, String outputFilename)
{
ArrayList<String> story = reader.getWordsInFile(storyFilename);
for(String s : story)
{
if(s.contains("ADJEKTIV."))
{
s = randomAdjective(adjectivesFilename) + ". ";
}
if(s.contains("ADJEKTIV"))
{
s = randomAdjective(adjectivesFilename);
}
}
writer.write(story, outputFilename);
}
}
この
はOutputWriterクラスからメソッドです:public void write(ArrayList<String> output, String filename)
{
try {
FileWriter out = new FileWriter(filename);
for(String word : output) {
out.write(word + " ");
}
out.close();
}
catch(IOException exc) {
System.out.println("Error writing output file: " + exc);
}
}
あなたはリストを更新していません。 's = ...'は新しい 'String'を再インスタンス化します。これは' List'のインスタンスではなくなったので、その値をリストに設定する必要があります。そのためには、インデックスを把握する必要があります。 – AxelH
[ArrayList.set()](https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#set(int、%20E)) –
ありがとうございました!私はそれがそれのようなものかもしれないと思った!私はコードを書き直そうとします! –