Java 计算文本文件

Java 计算文本文件,java,file,text,Java,File,Text,我是编程新手,在我的课堂上,我们被分配了一个任务,在JavaEclipse中,我们必须编写一个程序来选择一个文本文件(记事本),该文件有四个数字并计算其平均值。我们被要求使用不同的方法,我被卡住了,我到处都在研究,什么也找不到,这是我得到的,我不知道我是否接近,我的问题是“getheaverage”方法 import java.io.BufferedReader; import java.io.IOException; import java.io.FileReader; import java

我是编程新手,在我的课堂上,我们被分配了一个任务,在JavaEclipse中,我们必须编写一个程序来选择一个文本文件(记事本),该文件有四个数字并计算其平均值。我们被要求使用不同的方法,我被卡住了,我到处都在研究,什么也找不到,这是我得到的,我不知道我是否接近,我的问题是“getheaverage”方法

import java.io.BufferedReader;
import java.io.IOException;
import java.io.FileReader;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

public class Week04 {
    public static void main(String[] args)     throws IOException {
        String theFile;
        theFile = getTheFileName();
        double theAverage;
    theAverage = getTheAverage(theFile);
        displayTheResult(theAverage,"The average is; ");
}
public static String getTheFileName(){
    String theFile;
    JFileChooser jfc = new JFileChooser();
    jfc.showOpenDialog(null);
    return theFile = jfc.getSelectedFile().getAbsolutePath();
}
public static double getTheAverage(String s) throws IOException{
    double theAverage = 0;
    FileReader fr = new FileReader(s);
    BufferedReader br = new     BufferedReader(fr);
    String aLine;
    while ( (aLine = br.readLine()) != null) {
        theAverage =     Double.parseDouble(s);
    }
    return theAverage;
}
public static void displayTheResult(double x,     String s){
        JOptionPane.showMessageDialog(null,s + x);
}
}

尝试改用扫描仪对象。看起来你让这件事变得更加困难了

    // Get file name from user.
    Scanner scnr = new Scanner(System.in);
    System.out
            .println("Please enter the name of the file containing numbers to use?");
    String fileName = scnr.next();
    scnr.close();

    // Retrieve File the user entered
    // Create File object
    File file = new File(fileName);
    try {

        // Create new scanner object and pass it the file object from above.
        Scanner fileScnr = new Scanner(file);

        //Create values to keep track of numbers being read in
        int total = 0;
        int totalNumbers = 0;

        // Loop through read in file and average values.
        while (fileScnr.hasNext()) {
            total += fileScnr.nextInt();
            totalNumbers++;
        }
        //Average numbers
        int average = total/totalNumbers;

        // Close scanner.
        fileScnr.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
        // Quit Program if file input is bad.
        System.exit(0);
    }
假设“average”表示值,则需要将所有解析的值相加,然后除以找到的值的数目。在这方面,您的代码至少有4个问题:

  • Double.parseDouble()正在读取未初始化变量
    s
    ,而不是刚刚读取的行(在
    aLine
    中)的值
  • 您没有对找到的值求和
  • 您没有记录找到的值的数量
  • 你不是在用总数除以总数
根据您的代码,下面是一个示例,说明您可能是如何做到这一点的

import java.io.BufferedReader;
import java.io.IOException;
import java.io.FileReader;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import java.util.ArrayList;

public class Week04 {
    public static void main(String[] args) throws IOException {
        String theFile;
        theFile = getTheFileName();
        double theAverage;
        theAverage = getTheAverage(theFile);
        displayTheResult(theAverage,"The average is; ");
    }

    public static String getTheFileName() {
        String theFile;
        JFileChooser jfc = new JFileChooser();
        jfc.showOpenDialog(null);
        return theFile = jfc.getSelectedFile().getAbsolutePath();
    }

    public static double getTheAverage(String s) throws IOException {
        double value = 0, numValues = 0;
        FileReader fr = new FileReader(s);
        BufferedReader br = new BufferedReader(fr);
        String aLine;
        while ( (aLine = br.readLine()) != null) {
            if (aLine.equals("")) continue;
            value += Double.parseDouble(aLine);
            numValues++;
        }
        if (numValues > 1) {
            return value/numValues;
        } else {
            return value;
        }

    }
    public static void displayTheResult(double x, String s){
            JOptionPane.showMessageDialog(null,s + x);
    }
}

也许作业要求你计算不同类型的平均值,如平均值、模式、中位数等。。。1) 张贴你的实际任务。2) 发布一个明确而直接的问题,说明是什么让你困惑。