2014-10-31 41 views
0

我在这里有一个问题:我有这个程序打印所有偶数从0到1000,但在朋友做了一些改变后,它现在只打印“0”。我已经使用了它一段时间,并不能确定它是一个循环问题或printwriter问题。我从printWriter方法中取出了循环,但仍然没有任何结果。我究竟做错了什么?PrintWriter问题偶数

import java.io.FileNotFoundException; 
import java.io.File; 
import java.io.PrintWriter; 

public class NumberWriter { 


public static void main(String[] args) { 
    String fileName = "numbers.txt"; 





    try { 
     PrintWriter outputStream = new PrintWriter(fileName); 


     for(int i = 0; i <= 1000; i++){ 
      if (i%2==0){ 


     outputStream.println(i + ""); 
     outputStream.close(); 

     } 
     } 
    } 


    catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 



    } 
} 
    } 
+1

好像你刚刚关闭的OutputStream中的如果。 – 2014-10-31 20:49:27

+0

那是什么'i +“”'在那里? – 2014-10-31 20:58:31

回答

2

不要关闭您的PrintWriteroutputStream),或者你不会得到任何更多的输出。而且你的代码可以被优化以增加2并绕过偶数测试(这是可行的,因为每个偶数都是2的倍数)。而Java现在已经The try-with-resources Statement,所以你不必记住关闭PrintWriter

try (PrintWriter outputStream = new PrintWriter(fileName)) { 
    for(int i = 0; i <= 1000; i += 2){ 
    outputStream.println(Integer.toString(i)); 
    } 
} catch (FileNotFoundException e) { 
    e.printStackTrace(): 
} 
+1

你当然*应该*关闭它,只是不*还*。 – 2014-10-31 20:59:03

+1

@DavidConrad +1糟糕。增加了“尝试与资源”。 – 2014-10-31 21:02:39

+0

真棒,谢谢你们! – 2014-10-31 21:08:10