1

長いステートメントをより簡単に言うことを目的として、チャットを通じてスピーチを行うバッファリングされたリーダーを作成しようとしています。私はこのバッファリングされたリーダーに聞いてもらいました。ほとんどの場合は機能しますが、最後の行しか読み取らず、他のすべては完全に正常に機能します。コードのどこが間違っていますか? 参考までに:(明確にするために、「eggtime」は時間遅延ブール値です)

static File waffles = new File(Minecraft.getMinecraftDir(), "speech.txt");

public static void speechedo(String args)
{


    if(waffles.exists())
    {
        @SuppressWarnings("resource")
        BufferedReader read = null;
        try {
            read = new BufferedReader(new FileReader(waffles));
        } catch (FileNotFoundException e) {

            e.printStackTrace();
        }
        String notataco;
        if (eggtime){
        try {
            for(int i = 0; (notataco = read.readLine()) != null; i++)
            {

                speechmakerchat = notataco;


            }
        } catch (IOException e) {

            e.printStackTrace();
        }
        }

    }else{
        return;}

    }
4

2 に答える 2

0

ラインで

 speechmakerchat = notataco;

の内容を最後の行に置き換え、speechmakerchat以前に読み取った値を破棄しています。新しいデータを古いデータに連結する必要があります。

 speechmakerchat += notataco;

ところで、変数には... 興味深い... 命名規則があります。

于 2012-09-19T00:25:38.603 に答える
0

My buffered reader for minecraft only reads the last line

No, your buffered reader reads every line. However you are throwing away all but the last line.

Also your exception handling is poor. You shouldn't allow the method to continue after an IOException constructing the BufferedReader. Mostly your catch blocks are in the wrong place: they should be after all the main code.

于 2012-09-19T00:38:54.083 に答える