2010-05-03 22 views
1

Je ne suis pas un programmeur java, je suis un programmeur VB. Je fais cela dans le cadre d'une affectation, cependant, je ne demande pas d'aide sur quelque chose de spécial. Je voudrais comprendre comment obtenir le OutputStreamWriter pour fonctionner correctement dans cette instance. Je veux juste capturer les valeurs que je génère et les placer dans un document texte. Le fichier est généré, mais une seule entrée existe, pas les 40 que j'attends. Je pourrais le faire en un clin d'œil avec VB, mais java me semble très étrange en ce moment. Votre aide est appréciée.Essayer d'écrire une boucle qui utilise un OutputStream pour écrire dans un fichier texte

Merci,

Steve

Voici le code:

public static void main(String[] args) { 
    long start, end; 
    double result,difference; 

    try { 
     //OutputStream code assistance from 
     // http://tutorials.jenkov.com/java-io/outputstreamwriter.html 
     OutputStream outputStream = new FileOutputStream("c:\\Temp\\output1.txt"); 
     Writer out = new OutputStreamWriter(outputStream); 

     for(int n=1; n<=20; n++) { 
     //Calculate the Time for n^2. 
     start = System.nanoTime(); 

     //Add code to call method to calculate n^2 
     result = mN2(n); 
     end = System.nanoTime(); 
     difference = (end - start); 

     //Output results to a file 
     out.write("N^2 End time: " + end + " Difference: " + 
      difference + "\n"); 
     out.close(); 
     } 
    } catch (IOException e){ 
    } 

    try { 
     OutputStream outputStream = new FileOutputStream("c:\\Temp\\output1.txt"); 
     Writer out = new OutputStreamWriter(outputStream); 

     for(int n=1; n<=20; n++){ 
     //Calculate the Time for 2^n. 
     start = System.nanoTime(); 
     //Add code to call method to calculate 2^n 
     result = m2N(n); 
     end = System.nanoTime(); 
     difference = (end - start); 
     //Output results to a file 
     out.write("N^2 End time: " + end + " Difference: " + difference + "\n"); 
     out.close(); 
     } 
    } catch (IOException e){ 
    } 
    } 

    //Calculate N^2 
    public static double mN2(double n) { 
    n = n*n; 
    return n; 
    } 

    //Calculate 2N 
    public static double m2N(double n) { 
    n = 2*n; 
    return n; 
    } 

Répondre

4

vous fermez votre fichier dans la boucle. La prochaine fois autour de la boucle, vous essaierez d'écrire dans le fichier fermé, ce qui provoquera une exception ... mais où vous attrapez IOException vous avez un bloc vide, qui ignorera effectivement l'exception.

Essayer déplacer l'appel out.close() dans un bloc finally, comme ceci:

try { 
    ... 
} 
catch (IOExcetpion e) { 
    // Log any errors 
} 
finally { 
    out.close(); 
}