Файл ввода / вывода / добавления проекта - PullRequest
0 голосов
/ 30 сентября 2019

Я работаю над проектом для моего вступления в класс Java, и я застрял.

Вот требования к проекту:

Напишите программу на Java, которая запрашивает у пользователя имена трех файлов. Первый файл должен быть открыт для чтения, а два других файла должны быть открыты для записи. Если входной файл не существует, выдайте соответствующее сообщение об ошибке и завершите работу программы. Программа должна прочитать содержимое первого файла, изменить все символы в верхний регистр и сохранить результаты во втором файле, одновременно добавив результаты в третий файл. В конце второй файл будет копией первого файла, за исключением того, что все символы будут в верхнем регистре. Если мы запустим программу несколько раз, третий файл будет содержать содержимое всех входных файлов, которые обработала ваша программа.

Это то, что у меня есть:

import java.io.*;
import java.util.Scanner;
public class FileIO
{
  public static void main(String[] args) throws IOException
  {
     Scanner kb = new Scanner(System.in);
     System.out.println("Enter input filename: ");
     String fileName = kb.nextLine();
     File file = new File(fileName);
     if (!file.exists())
     {
        System.out.println("File not found.");
        System.exit(0);
     }
     Scanner inFile = new Scanner(file);

     System.out.println("Enter output filename: ");
     String outFileName = kb.nextLine();
     PrintWriter outFile = new PrintWriter(outFileName);

     while (inFile.hasNext())
     {
        String str = inFile.nextLine();
        String upperCase = str.toUpperCase();
        outFile.println(upperCase);
     }
     inFile.close();

     System.out.println("Enter another output filename (append): ");
     String appFileName = kb.nextLine();
     FileWriter fw = new FileWriter(appFileName, true);
     PrintWriter appFile = new PrintWriter(fw);

     while (outFile.hasNext())
     {
        String str2 = outFile.nextLine();
        appFile.println(str2);
     }

     System.out.println("Data written to \"" + outFileName + "\" and \""
                        + appFileName + ".\"");

     outFile.close();
     appFile.close();
     }
  }

Когда япопробуйте скомпилировать, я получаю следующее сообщение об ошибке:

FileIO.java:40: error: cannot find symbol
  while (outFile.hasNext())
                ^
 symbol:   method hasNext()
 location: variable outFile of type PrintWriter
FileIO.java:42: error: cannot find symbol
        String str2 = outFile.nextLine();
                          ^
 symbol:   method nextLine()
 location: variable outFile of type PrintWriter
 2 errors

Я немного понимаю, почему это ошибка, но я не могу думать о том, что еще делать здесь. Пожалуйста, помогите, спасибо !!

1 Ответ

0 голосов
/ 30 сентября 2019

Вы говорите, что должны:

сохранить результаты во втором файле одновременно и добавить результаты в третий файл

Но ваш код пытается сказать:

сохранить результат в выходном файле. Позже, прочитайте ввод из выходного файла и запишите в третий.

Если вы просто пропустите это и реализуете часть «одновременно», вам не нужно будет читать ввод из выводафайл, который облегчает:

import java.io.*;
import java.util.Scanner;
public class FileIO
{
  public static void main(String[] args) throws IOException
  {
     Scanner kb = new Scanner(System.in);
     System.out.println("Enter input filename: ");
     String fileName = kb.nextLine();
     File file = new File(fileName);
     if (!file.exists())
     {
        System.out.println("File not found.");
        System.exit(0);
     }
     Scanner inFile = new Scanner(file);

     // Open both output files
     System.out.println("Enter output filename: ");
     String outFileName = kb.nextLine();
     PrintWriter outFile = new PrintWriter(outFileName);

     System.out.println("Enter another output filename (append): ");
     String appFileName = kb.nextLine();
     FileWriter fw = new FileWriter(appFileName, true);
     PrintWriter appFile = new PrintWriter(fw);

     while (inFile.hasNext())
     {
        String str = inFile.nextLine();
        String upperCase = str.toUpperCase();
        // Write each input line to both output files at the same time
        outFile.println(upperCase);
        appFile.println(str);
     }
     inFile.close();
     outFile.close();
     appFile.close();

     System.out.println("Data written to \"" + outFileName + "\" and \""
                        + appFileName + ".\"");
     }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...