好的,这是我第一次实施课程,一切都出错了。我在暗示一个不同的类,PhraseGenerator,我希望在这里定义的方法是getPhrase()。它需要返回Archa。我没有在其中工作,而是选择在我的工作中围绕我的工作,现在,无论我把它放在哪里,都会出现不同的错误。在处理任何这些之前,我想确保我把它放在正确的位置。根据我的理解,它将在公共场所内进行.... FromFile实现了PhraseGenerator。有关它应该去哪里的任何想法?
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.List;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PhraseGeneratorFromFile implements PhraseGenerator {
private ParserHelperImpl parserHelper;
public String getPhrase() {
public PhraseGeneratorFromFile(String filename) {
// read file
StringBuilder fileContent = new StringBuilder();
BufferedReader br = new BufferedReader(new FileReader(filename));
try {
String line = br.readLine();
while (line != null) {
fileContent.append(line);
fileContent.append('\n');
line = br.readLine();
}
String everything = fileContent.toString();
} finally {
br.close();
}
parserHelper = new ParserHelperImpl();
List<String> phraseCollection = parserHelper.getPhrases(fileContent,"phrases:");
String archetype = parserHelper.getRandomElement(phraseCollection);
boolean flagga = true;
while(flagga = true){
Pattern ptrn = Pattern.compile("#[^#]+#");
Matcher m = ptrn.matcher(archetype);
String fromMatcher = m.group(0);
String col = ":";
String token = fromMatcher+col;
List<String> pCol = parserHelper.getPhrases(fileContent, token);
String repl = parserHelper.getRandomElement(pCol);
String hash = "#";
String tk2 = hash + token + hash;
archetype = parserHelper.replace(archetype, tk2, repl);
flagga = m.find();
}
String theArcha = archetype;
return theArcha;
}
}
}
答案 0 :(得分:0)
是的,它位于正确的位置,但您错过了结束}
,它应该在{
之后。你不能把方法放在另一个方法里面。
因为你想要返回theArcha
,你应该把它变成我们称之为“实例变量” - 你可能没有听说过这个?如果没有,请查阅。
答案 1 :(得分:0)
在此处发布问题时的一个好习惯是:
(1)。简要说明您对代码的期望。
(2)。如果您遇到某些错误,请将其复制到此处,以便了解代码中出现的问题。
我认真地没有理解你想要实现的目标,但我看到
中缺少结束括号public String getPhrase()
应该是:
public String getPhrase()
{
//logic here
}
希望这有帮助
答案 2 :(得分:0)
您的界面可能就像这样
interface PhraseGenerator {
String getPhrase();
}
然后你编写的实现类将采用
形式class PhraseGeneratorImpl implements PhraseGenerator {
private ParserHelperImpl parserHelper;
@Override //Used for an overridden or implemented method
public String getPhrase() {
//Put all the code you want to implement here..
//If you want to make use of a helper Class the clean way is to use an instance of it(You tried it with Helper)
//If you want to make use of a utility method within the same class,
//say reading something from the file system define a private method below this method
String filePhrase = phraseGeneratorFromFile();
//Now use the filePhrase do do other stuff
}
//
private String phraseGeneratorFromFile(){
//Do all the stuff and return phrase/string so declare return type. you havent done it in the code above
}
}