- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
更新:非常感谢您的所有意见!我发现我的low返回全0是因为java初始化所有整数0所以我将其更改为int lowScore [] = new int [] {100, 100, 100, 100, 100}。 findAvg 的问题是,在 main 中我创建了一个学生数组 [40],但该文件仅包含 15 个学生,这就是为什么我不能使用 a.length 来查找平均值。我添加了代码来计算行数。
我正在做一项作业,内容是读取学生 ID 的 txt 文件及其 5 个测验分数。该作业要求读取最多 40 名学生的分数,并计算每个测验的最高分、最低分和平均分。
示例输出:
梭哈测验1 测验2 测验3 测验4 测验5
1234 90 100 90 98 80
1243 92 92 90 98 70
高分:92 100 90 98 80
低分:90 92 90 98 70
平均分:91 96 90 98 75
我创建了4个类:用于ID和分数的学生类,用于计算高、低和平均值的统计类,用于读取文件功能的util类,以及主要的驱动程序类。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
class Student {
private int SID;
private int scores[] = new int[5];
public int getSID() {
return SID;
}
public void setSID(int sID) {
SID = sID;
}
public int getScores(int index) {
return scores[index];
}
public void setScores(int[] scores) {
this.scores = scores;
}
public void printSID() {
System.out.println(SID);
}
public void printScores() {
for (int x : scores) {
System.out.println(x);
}
}
}
class Statistics {
private final int[] lowscores = new int[5];
private final int[] highscores = new int[5];
private final float[] avgscores = new float[5];
public void findlow(Student[] a) {
for (Student stu : a) {
for (int i = 0; i < 5; i++) {
lowscores[i] = Math.min(lowscores[i], stu.getScores(i));
}
}
}
public void findhigh(Student[] a) {
for (Student stu : a) {
for (int i = 0; i < 5; i++) {
highscores[i] = Math.max(highscores[i], stu.getScores(i));
}
}
}
public void findavg(Student[] a) {
int[] sum = new int[5];
for (Student stu : a) {
for (int i = 0; i < 5; i++) {
sum[i] += stu.getScores(i);
avgscores[i] = sum[i] / a.length;
}
}
}
public void printLow() {
for (int x : lowscores) {
System.out.println("Low Score " + x);
}
}
public void printHigh() {
for (int x : highscores) {
System.out.println("High Score " + x);
}
}
public void printAvg() {
for (float x : avgscores) {
System.out.println("Average " + x);
}
}
}
class Util {
static Student[] readFile(String filename, Student[] stu) {
try {
FileReader file = new FileReader(filename);
BufferedReader buff = new BufferedReader(file);
int count = 0;
boolean eof = false;
while (!eof) {
String line = buff.readLine();
if (line == null)
break;
else {
System.out.println(line);
if (count > 0) {
StringTokenizer st = new StringTokenizer(line);
for (int i = 0; i < stu.length; i++) {
stu[i] = new Student();
}
stu[count - 1].setSID(Integer.parseInt(st.nextToken()));
int scores[] = new int[5];
int scoreCount = 0;
while (st.hasMoreTokens()) {
scores[scoreCount] = Integer.parseInt(st.nextToken());
scoreCount++;
stu[count - 1].setScores(scores);
}
}
}
count++;
}
buff.close();
} catch (IOException e) {
System.out.println("Error -- " + e.toString());
}
return stu;
}
}
public class Driver{
public static void main(String[] args) {
Student lab4[] = new Student[40];
lab4 = Util.readFile("C:\\lab4.txt", lab4);
Statistics statlab4 = new Statistics();
statlab4.findlow(lab4);
statlab4.findhigh(lab4);
statlab4.findavg(lab4);
statlab4.printLow();
statlab4.printHigh();
statlab4.printAvg();
}
}
程序读取输入文件 lab4.txt,其中包括 1 行标题和 15 行学生记录。程序运行,但无法正确计算高低值和平均值。我知道我对平均值的计算可能是错误的;但我不知道为什么高和低不起作用。
请帮助我。谢谢你!
最佳答案
对于查找平均值,您不应在每次迭代时除以 a.length
。
public void findavg(Student []a) {
int []sum = new int [5];
for(Student stu: a) {
for(int i=0; i<5; i++) {
sum[i] += stu.getScores(i);
}
}
for(int i=0; i<5; i++) {
avgscores[i] = sum[i] / a.length;
}
}
最小值和最大值看起来不错。
关于Java读取学生记录并计算每次测验的高低和平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31667215/
哟 快速提问:Nhibernate HiLo id 在数据库中是唯一的吗? 我问的原因是我们有多个实体,这些实体有一个与之关联的图像。在客户端 - 我只是将这些图像存储在一个文件夹中,使用实体 ID
我有一个 Arduino,我想知道 HIGH 和 LOW 到底是什么意思,就实际值而言......它们是否有签名 ints? 无符号整数? 无符号字符?他们的值(value)观是什么?我猜测 HIGH
全部。我对编程很陌生,我试图找出为什么我的代码不能正常工作。它会一直运行良好,直到您告诉计算机它的第一个猜测是否太高 (h) 或太低 (l)。比如说,如果猜测太高,并告诉计算机,之后的每次猜测都会继续
我是一名优秀的程序员,十分优秀!