1

私はJavaの初心者であり、後置評価のために以下の問題を書きました。プログラムはコンソールIOでは正常に動作しますが。ファイルを使用するときに問題があります。プログラムの回答をファイルで取得しようとしていますoutput00.txtが、ファイルが空です。これがコードです。この問題に関係のない方法は省略しました。

public static void main(String[] args) throws Exception  {


     FileReader input = new FileReader("input00.txt");
        BufferedReader in = new BufferedReader(input)   ;
        FileWriter output = new FileWriter("output00.txt");
        BufferedWriter out = new BufferedWriter(output);
        while (true)  {
          String lineReader = in.readLine();
          if (lineReader==null) {
              break;
          }
          Stack<String> m_Stack = new Stack<String>();

          m_Stack.addAll(Arrays.asList(lineReader.trim().split("[ \t]+")));

          if (m_Stack.peek().equals("")){
              continue;
          }
          try  {
            double finVal = evaluateRPN(m_Stack);
            if (!m_Stack.empty()) {
                throw new Exception();
            }
            out.write(finVal + "\n");
          }
          catch (Exception e)  {System.out.println("error");}
        }
      }

ファイルinput00.txtには

8 9 +
7 6 -
7 7 * 9 -
4

3 に答える 3

6

out.flush()ファイルに書き込んだ内容をフラッシュするために呼び出すか、バッファリングされたものを自動的にフラッシュするように呼び出す必要がありout.close()ます。close()実際には、while()ループを終了する方法がある場合は、それが良い習慣であるため、とにかく呼び出す必要があります。

于 2012-08-17T07:42:44.343 に答える
2

ストリームを閉じる必要があります。試すout.close()

于 2012-08-17T07:41:17.673 に答える
0

out.flush() write ステートメントの後に追加してみてください。次に、バッファをファイルに書き込みます。

于 2012-08-17T07:54:14.690 に答える