2014-10-31 5 views
0

У меня проблема: у меня была эта программа, печатая все четные числа от 0 до 1000, но после того, как друг внес некоторые изменения, она печатает только «0». Я работал с ним некоторое время и не могу понять, есть ли проблема с циклом или проблема с печатающим устройством. Я выбрал цикл из метода 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 в случае. –

+0

Что это такое 'i +" "' там? –

ответ

2

Не закрывайте PrintWriter (outputStream), или вы не будете получать больше продукции. И ваш код может быть оптимизирован для увеличения на 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

Вы обязательно * должны * закрыть его, просто не * еще *. –

+1

@DavidConrad +1 К сожалению. Добавлено 'try-with-resources'. –

+0

Awesome, спасибо, ребята! –

Смежные вопросы