2015-03-06 5 views
1

Я работаю над назначением и не могу получить этот метод для получения правильного вывода в файл. Я должен получить среднее значение и записать его в файл. Их класс StatsDemo и класс StatsFile. Я вроде начинающий на Java, поэтому мне бы хотелось немного помочь. Мой метод в классе StatsFile в настоящее время, как это:Запись/чтение файлов в Java

//returns the calculated arithmetic average 
public double calculateMean(String filename) throws FileNotFoundException 
{ 
    // declare variables step 5 
    double accumulator = 0.0; 
    int counter =0; 
    String line; 
    try{ 
    File input = new File(filename); 
    //create a Scanner object passing it the File object 
    Scanner keyboard = new Scanner(input); 
    //for (int i = 0; i < input.length(); i++){ 
     // Read a double from the file. 
    while(keyboard.hasNextDouble()){ 
     accumulator += keyboard.nextDouble(); 

     // Add to counter 
     counter++; 
    } 
    keyboard.close(); 


}catch(FileNotFoundException e){ 
    } 
    return (accumulator/counter); 
} 

Демонстрационная как таковой:

import java.util.Scanner; 
import java.text.DecimalFormat; 
import java.io.*; 
public class StatsDemo { 

    public static void main(String[] args) throws FileNotFoundException { 
     // TODO Auto-generated method stub 

     DecimalFormat threeDec = new DecimalFormat("0.000"); 
     Scanner keyboard = new Scanner(System.in); 

     String filename; // the user input file name 

     System.out.print("Enter the file name: "); 
     filename = keyboard.nextLine(); 


     FileStats fileObj = new FileStats(filename); 

     try{ 
      PrintWriter name = new PrintWriter("Results.txt"); 
      name.println("mean = " + threeDec.format(fileObj.getMean())); 
      name.println("Standard Deviation = " + threeDec.format(fileObj.getStdDev())); 

      name.close(); 
     }catch(IOException e){ 
      System.out.println("Error"); 
     } 
    } 
} 

Уловы и бросает все еще отчасти запутать меня. Моя проблема заключается в том, что в настоящее время он дает мне знак вопроса вместо среднего, когда я открываю файл. Любая помощь будет оценена.

+2

Вы проверили, что 'FileNotFoundException' не выбрасывается? Пустые блоки блокировки опасны. – Kayaman

+0

Не отображается ли на консоли какая-либо ошибка? Кажется, fileObj.getMean (отправьте код, пожалуйста) дает какое-то исключение uncatched –

+0

Лучше обеспечить реализацию 'getMean()'. Как это связано с 'calcullateMean'? – CoronA

ответ

0

Если исключение происходит в блоке try, управление переходит к блоку catch. Вы должны думать о том, что должно произойти в этом случае. Возможно, вы сможете исправить проблему и продолжить ее; вы можете захотеть взглянуть на проблему и реконструировать и исключить, или вы можете просто позволить своему вызывающему лицу справиться с этой проблемой. В последнем случае вам вообще не нужен улов, вам может понадобиться только throws в объявлении метода.

Ловля исключения и ничего не делающего редко бывает хорошей идеей, поскольку проблема просто игнорируется. Помните, что поток кода будет выполняться после предложения catch, если не будет выбрано другое исключение, поэтому, если файл не существует, вы все равно будете обрабатывать строку return (accumulator/counter), которая не является тем, что вы хотите.

Глядя на свой код, ваш метод уже генерирует исключение FileNotFoundException, поэтому просто удалите try и catch.

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