2017-12-08 10 views
1

ファイルをチェックするときに空白だけがあるので、ダブルスをテキストファイルに書き込むときに何かが見当たりません。私がファイルから読み込み、System.out.println()で印刷するとき。それは何も印刷しない...ここで何がうまくいかないの?私は変換する必要がありますか? mainあなたは、3種類のオブジェクトを作成しているだけ最初は、あなたがファイルから読み込ま番号が含まれているために起こっているにファイルにダブルスを書いて、何も書いていないことを教えてください。

import java.io.*; 
import javax.swing.JOptionPane; 

public class ReadCalcAveragePrint { 

    double firstNum; 
    double secondNum; 
    double average; 

    public void readFile() { 

     try { 
      File f = new File("numbers.txt"); 
      BufferedReader br = new BufferedReader(new FileReader(f)); 
      String one = br.readLine(); 
      String two = br.readLine(); 
      firstNum = Double.parseDouble(one); 
      secondNum = Double.parseDouble(two); 

      average = (firstNum + secondNum)/2; 
      JOptionPane.showMessageDialog(null, average, "title", JOptionPane.PLAIN_MESSAGE); 

     } catch (Exception e) { 
      e.printStackTrace(); 
      System.out.println(e); 
     } 

    } 

    public void writeFile() { 
     try { 
      File f = new File("result.txt"); 
      FileOutputStream fos = new FileOutputStream(f); 
      DataOutputStream dos = new DataOutputStream(fos); 
      dos.writeDouble(average); 
      dos.flush(); 
      fos.close(); 
      System.out.println("Printed."); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      System.out.println(e); 

     } 
    } 

    public void readResult() { 

     try { 
      File f = new File("result.txt"); 
      BufferedReader br = new BufferedReader(new FileReader(f)); 
      String one = br.readLine(); 
      System.out.println(one); 

     } catch (Exception e) { 
      e.printStackTrace(); 
      System.out.println(e); 
     } 

    } 

    public static void main(String[] args) { 

     new ReadCalcAveragePrint().readFile(); 
     new ReadCalcAveragePrint().writeFile(); 
     new ReadCalcAveragePrint().readResult(); 
    } 
} 

答えて

3

あなたはただ一つのオブジェクトを作成し、再利用する必要があります。

public static void main(String[] args) { 
    ReadCalcAveragePrint obj = new ReadCalcAveragePrint(); 
    obj.readFile(); 
    obj.writeFile(); 
    obj.readResult(); 
} 

また、あなたはバイナリ形式でデータを書き込むためのものですDataOutputStreamを使用して結果ファイルを書いているし。あなただけのテキストとして結果を保存したい場合は、代わりにFileWriterを使用する必要があります。

File f = new File("result.txt"); 
FileWriter fw = new FileWriter(f); 
fw.write(String.valueOf(average)); 
fw.close(); 
0

はのwriteDoubleのJavadocを参照してください。

がDoubleクラスで長いdoubleToLongBitsメソッドを使ってdouble引数を変換し、そのlong値を高位バイトを先頭にして8バイトの量として基になる出力ストリームに書き込みます。

英数字に割り当てられない可能性のある8バイトを書きます。次に、それを文字列(次の '改行'文字までの文字)として読み込みます。 この場合、 'new line' charはどこでもかまいません(結果に応じて)。

ファイル内の8バイトはほぼ4文字を意味しますが、誰も「見える文字」ではありません。

てみたInputStreamからbyte[8]を(ないバッファ1から)読んで、その後、あなたはそれらのバイトで表現し、前のファイルに書かdouble値を取得することができ、DoubleBufferにそれらの8つのバイトを配置します。

関連する問題