0

bukkitプラグインに問題があります。私がやろうとしているのは、ファイルを検索して1行ずつ読み取ることです(これは機能します)。その行にテキストが含まれている場合は、その行を返す必要がありますが、他のすべての行も返す必要があります。その特定のテキストも含まれているファイル。そして、これらの行がある場合、メッセージでこれらの行をプレーヤーに送信する必要がありますが、これは問題ではありませんが、今取得した行を送信すると、「\n」が機能しません。コードは次のとおりです。私は今使用しています:

  public String searchText(String text, String file, Player p)
    {
        String data = null;

        try {
            BufferedReader br = new BufferedReader(new FileReader(file));
            String line = null;

            while((line = br.readLine()) != null)
            {
                if(line.indexOf(text) >= 0)
                {
                    data += System.getProperty("line.separator") + line + System.getProperty("line.separator");
                }
                p.sendMessage("+++++++++++GriefLog+++++++++++");
                p.sendMessage(data);
                p.sendMessage("++++++++++GriefLogEnd+++++++++");
            }

            br.close();

        } catch (Exception e) {
            e.printStackTrace();            
        }

        return "";
    }

情報が少し高いプレーヤーに返されるため、戻り値は空になります。P問題は、データ変数に「\ n」を追加する方法です。これは、残りの部分でこの関数を使用する場合です。私のコードでは、多くの行が表示されますが、「\ n」がないので、どうすればそれを入れることができますか?

4

1 に答える 1

1

メソッドは何も返さないはずなので、returnステートメントを削除し、returnタイプをvoidに設定します。コードは、検索語が出現する行ごとに1回データ文字列を出力するようです。次のことを試してください。

data = "";
while((line = br.readLine()) != null)
{
    if(line.indexOf(text) >= 0)
    {
        //remove the first System.getProperty("line.separator") if
        //you don't want a leading empty line
        data += System.getProperty("line.separator") + line + 
            System.getProperty("line.separator");
    }
}
if (data.length() > 0) {
    p.sendMessage("+++++++++++GriefLog+++++++++++");
    p.sendMessage(data);
    p.sendMessage("++++++++++GriefLogEnd+++++++++");
}
于 2012-05-03T08:53:03.743 に答える