Ich bin neu in der Java-Programmierung und habe gerade eine Aufgabe in der Schule, mit der ich ein bisschen zu kämpfen habe. Der Code, den Sie unten sehen, ist der einzige Code, den ich bearbeiten darf.Wie aktualisiere ich die ArrayList?
Die Zuordnung ist das Wort „adjektiv“ in einer txt-Datei und ersetzen Sie es mit einem zufälligen Adjektiv von einem anderen txt-Dokument mit nur Adjektiven zu finden. Dieser Teil denke ich, dass ich genagelt habe. Aber wenn ich versuche, die Write-Methode von einer anderen Klasse namens OutputWriter zu verwenden, scheint es, als würde es die neuen Updates nicht zu den Strings bringen, die "ADJEKTIV" enthalten. Muss ich die ArrayList irgendwie "updaten", um die Änderungen zu behalten?
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);
}
}
Mit dieser Methode von der OutputWriter-Klasse ist:
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);
}
}
Sie aktualisieren die Liste nicht. 's = ...' reinstanziiere einen neuen 'String', dies ist nicht mehr die Instanz in der' List', du musst diesen Wert in die Liste setzen. Dafür müssen Sie den Index verfolgen. – AxelH
Verwenden [ArrayList.set()] (https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#set (int,% 20E)) –
Thank you! Ich dachte, es könnte so etwas sein! Ich werde versuchen, den Code neu zu schreiben! –