解开遗传方法

时间:2013-11-30 22:42:11

标签: java class inherited

好的,这是我第一次实施课程,一切都出错了。我在暗示一个不同的类,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;
    }


    }
    }

3 个答案:

答案 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
}



}