Я кодирую программу усреднения осадков. Программа позволяет пользователю вводить имя файла, и если файл не может быть найден, то пользователю предлагается повторно ввести имя файла. Пользователь получает 4 попытки, прежде чем приложение завершает свою работу без обработки данных, а само приложение, как я уже сказал, является программой усреднения осадков.
package experiment8;
import java.io.*;
import java.util.Scanner;
public class Exceptions
{
static Scanner inFile;
public static void main(String[] args) throws IOException
{
int fileTry = 0;
String fileName;
Scanner inName = new Scanner(System.in);
System.out.println("Enter file name>");
fileName = inName.nextLine();
boolean fileOk;
do
{
fileOk = false;
try
{
Scanner scan = new Scanner (System.in);
Scanner file = new Scanner(new File("inData.dat"));
fileOk = true;
}
catch(FileNotFoundException error)
{
System.out.println("Reenter file name>");
fileName = inName.nextLine();
fileTry++;
}
} while (!fileOk && fileTry < 4);
PrintWriter outFile = new PrintWriter(new FileWriter("outData.dat"));
if (fileOk && fileTry < 4 )
{
int numDays = 0;
double average;
double inches = 0.0;
double total = 0.0;
while (inFile.hasNextFloat())
{
inches = inFile.nextFloat();
total = total + inches;
outFile.println(inches);
numDays++;
}
if (numDays == 0)
System.out.println("Average cannot be computed " +
" for 0 days.");
else
{
average = total / numDays;
outFile.println("The average rainfall over " +
numDays + " days is " + average);
}
inFile.close();
}
else
System.out.println("Error");
outFile.close();
}
}
Я пытаюсь закодировать эту программу, чтобы при вводе правильного имени файла «inData.dat» я получал правильный вывод. Однако, когда я делаю это, мне продолжают предлагать повторно ввести имя файла в течение следующих 3 раз, после чего я получаю сообщение «Ошибка». Что-то не так с моими блоками try / catch или операторами if?