0

さて、クラスを実装するのはこれが初めてで、すべてがうまくいきません。私は別のクラス、PhraseGenerator を実装しています。ここで定義したい継承メソッドは getPhrase() です。Archa を返す必要があります。その中で作業する代わりに、後で作業を中かっこで囲むことを選択しましたが、今では、どこに置いても別のエラーが発生します. これらのいずれかに対処する前に、適切な場所に配置していることを確認したいと思います。私の理解では、 public....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

あなたのインターフェースはおそらくこのようなものです

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

はい、正しい場所にありますが、 の直後に}来るはずの終了がありません{。そのような別のメソッド内にメソッドを配置することはできません。

を返したいのでtheArcha、代わりに「インスタンス変数」と呼ばれるものにする必要があります。これについて聞いたことがないかもしれません。そうでない場合は、調べてください。

于 2013-11-30T22:50:49.077 に答える