当前位置: 首页 > 知识库问答 >
问题:

Java文件io计算平均值并存储在另一个文件中

子车鸿运
2023-03-14

我希望知道如何解决这类问题。提前谢谢你。问题来了。

4  80
Mary 65.5
Jack 43.25
Harry 79.0
Mike 32.5
Mary          81.88        passed 
Jack          54.06        passed 
Harry         98.75        passed 
Mike          40.63        failed 
class average:68.83
passed: 3
failed: 1

下面是我为它编写的代码

import java.util.*;
import java.io.*;

public class Lab10Quiz {
  public static void main(String[] args) throws FileNotFoundException 
  {
    // Test cases
    readWrite("test1.txt", "out1.txt");
    readWrite("test2.txt", "out2.txt"); 
    }

/** copies the content of the srcFileName into dstFileName, and add the average of the number to the end of the dstFileName
    @param srcFileName :  souce file name contains double numbers
@param dstFileName : destination file name 
    */
    public static void readWrite(String srcFileName, String 
dstFileName) throws FileNotFoundException {
// Your code goes here
    File output = new File(dstFileName);
    PrintWriter outPut = new PrintWriter(output);

    double avg = 0;
    int count = 0;
    double tmp = 0;

    Scanner in = new Scanner(new File(srcFileName));
    while (in.hasNextDouble()) {
     tmp = in.nextDouble();
     avg += tmp;
     outPut.println(tmp);
     count ++;
    }
   avg = avg / count;
   outPut.println("Average = " + avg);
  outPut.close();
  }
}

共有1个答案

益银龙
2023-03-14

这段代码实现了您想要的

    double avg = 0;
    int failCounter = 0;

    String[] keywords = in.nextLine().split(" ");
    int studentNumber = Integer.parseInt(keywords[0]);
    double examValue = Double.parseDouble(keywords[1]);

    for (int i = 0; i < studentNumber; i++) {
        keywords = in.nextLine().split(" ");
        String studentName = keywords[0];
        double studentMark = Double.parseDouble(keywords[1]);
        double grade = calculateTotalGrade(studentMark, examValue);
        failCounter += (hasFailed(grade) ? 1 : 0);
        avg += grade;
        outPut.println(String.format("%s \t\t %.2f \t\t %s", studentName, grade, hasFailed(grade) ? "failed" : "passed"));
    }
    avg = avg / studentNumber;
    outPut.println("class average: " + avg);
    outPut.println("passed: " + (studentNumber - failCounter));
    outPut.println("failed: " + failCounter);

并且我将一些逻辑提取到下面的方法中。

private static double calculateTotalGrade(double grade, double examValue) {
    return grade * 100 / examValue;
}

private static boolean hasFailed(double grade) {
    return grade < 50;
}

回答如何解决这类问题:

  1. 寻找最简单的方法。在这种情况下,有限次迭代的循环更容易。所以我使用了for循环。
  2. 计数器已给出,无需重新计算。
  3. 如果您在计算机上工作,请编写一些代码并对其进行测试。
  4. 多做一些类似的问题。(如果您通读本书的第一章,这些问题就很容易了)
 类似资料:
  • 我需要计算每行的平均值,并存储在最后一个元素中。我设法做到了,但后面的行是前一行的累计平均值。例如: 输入: 1 2 3 0 4 5 6 0 输出: 1.00 2.00 3.00 2.00 4.00 5.00 6.00 7.00(应为5.00) 这是我的代码 提前谢谢。:)

  • 我试图做以下java分配和每件事似乎工作正常,除了当我把一个数字 谢谢 赋值:创建一个询问考试结果并计算成绩平均值的程序。成绩是4到10之间的浮点数。程序要求成绩,直到键入负数。如果用户给出的分数不是4到10之间的数字,则文本“无效成绩!”将在屏幕上打印,程序要求另一个分数。最后,程序在屏幕上打印输入的成绩数及其平均值,如示例打印所示。如果没有输入成绩,通知“您没有输入任何成绩。”是屏幕上唯一打印

  • 问题内容: 我有两个Java.io.File对象file1和file2。我想将内容从file1复制到file2。有没有一种标准的方法可以执行此操作,而无需创建必须读取文件1并写入文件2的方法 问题答案: 不,没有内置方法可以做到这一点。与您要完成的工作最接近的是from 的方法,如下所示: 并且不要忘记处理异常并在一个块中关闭所有内容。

  • 问题内容: 编辑:我已经写了平均的代码,但我不知道如何使它也使用从我的args.length而不是数组的整数 我需要编写一个Java程序,该程序可以计算:1.读入的整数数2.平均值-不必是整数! 注意!我不想从数组中计算平均值,但是要在args中计算整数。 目前我已经写了这个: 谁能指导我正确的方向?还是举个例子,以书面形式指导我塑造这段代码? 提前致谢 问题答案: 只需对您的代码进行一些小的修改

  • 目前正在处理一个作业,我需要读取一个数字文件,并显示数字的总量、总偶数、总奇数以及所有三个数字的平均值。我目前正在努力寻找偶数和奇数的平均值。我必须显示偶数的平均值和奇数的平均值。我通过使用parseInt将我读取的数字字符串转换为整数来找到总平均值,这样我就可以计算平均值,但是当我尝试对偶数和奇数做同样的事情时,我无法让它工作。 这是我当前的代码: 输出:

  • 假设我有一个类的,每个类都有一个。 中的键是时间戳,值是分数。 我试图创建一个,它可以组合所有对象的地图,并输出带有唯一时间戳(Thes)和平均分数的。 我有这个代码,但它给我所有分数的总和,而不是平均值(类没有平均值方法)。 我想这可能不是一个简单的问题,所以在一个单一的中解决,所以一个带有唯一时间戳的和所有分数的的输出也可以。然后我可以自己计算平均值。 它它可能吗?