Печать в файл

#java #file-processing

#java #обработка файлов

Вопрос:

Я пытаюсь напечатать четные числа из input.txt файл в display.txt выходной файл. Каждый раз, когда я отправляю вывод на консоль вывода в качестве теста, он работает идеально. Он показывает четные числа. Всякий раз, когда я использую поток печати и отправляю его в файл, он выводит только последнее четное число.

Я провел исследование и спросил своего профессора, который говорит, что они не знают, что не так.

  Scanner inputfile=new Scanner(new File("input.txt"));
    double sum=0.0;
    int count=0;

    while (inputfile.hasNext())
    {
        if(inputfile.hasNextInt()) 
        {
            int next=inputfile.nextInt();
           int even=(next%2);              
           if(even==0)
           {


           PrintStream output=new PrintStream(new File("display.txt"));
          output.println(next); 
          System.out.println(next); 
           count  ;

           }


        }
        else
        {
            inputfile.next();
            continue;

        }

    }

    if(count>0) 
    {

     inputfile.close();
    }
    else
    {
    System.out.println("The file doesn't contain any integers. Exit 
     Program");
    }
 

Ожидаемый результат — все четные числа в display.txt досье. В файле печатается только последний.

Комментарии:

1. Вы пробовали это со своей ...new Printstream... строкой над циклом while?

Ответ №1:

Это связано с тем, что вы создаете экземпляр PrintStream в каждом цикле вашего while цикла, вы хотите создать экземпляр PrintStream output = new PrintStream(new File("display.txt")); перед запуском цикла while.

Например:

 // More code

PrintStream output = new PrintStream(new File("display.txt"));
while (inputfile.hasNext())
{
    if (inputfile.hasNextInt())
    {
        int next = inputfile.nextInt();
        int even = (next % 2);
        if (even == 0)
        {
            output.println(next);
            System.out.println(next);
            count  ;
        }
    }
    else
    {
        inputfile.next();
        continue;
    }
}

// More code