0

好的,这是我第一次实现类,一切都出错了。我正在实现一个不同的类 PhraseGenerator,我希望在这里定义的继承方法是 getPhrase()。它需要返回 theArcha。我没有在其中工作,而是选择在之后将它的大括号包裹在我的工作上,现在,无论我把它放在哪里,都会出现不同的错误。在处理任何这些之前,我想确保我把它放在正确的地方。据我了解,它将在公共范围内...... 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;
    }


    }
    }
4

3 回答 3

0

是的,它在正确的位置,但你错过了结束},它应该直接在{. 你不能把一个方法放在另一个方法里面。

因为你想 return theArcha,你应该把它变成我们所说的“实例变量”——你可能没有听说过这个?如果没有,请查一下。

于 2013-11-30T22:50:49.077 回答
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
}



}
于 2013-11-30T23:51:58.767 回答
0

在这里发布问题时的一个好习惯是:

(1)。简要说明你期望你的代码做什么。

(2)。如果您遇到某些错误,请将它们复制到此处,以便了解您的代码中出了什么问题。

我真的不明白你想要达到什么,但我看到一个缺少的右括号

public String getPhrase()

它应该是 :

public String getPhrase()
 {
 //logic here
 }

希望这可以帮助

于 2013-11-30T22:54:47.437 回答