【问题标题】:java constructor, arrays and void methodsjava构造函数、数组和void方法
【发布时间】:2013-12-22 19:18:03
【问题描述】:

此作业的目标是创建一个程序,该程序使用文本文件中的数据显示每个学生的平均成绩。我遵循了教授的指导方针,但我仍然认为我遗漏了一些东西或对数组列表和其中一种 void 方法做错了什么。这些是指导方针:

创建一个名为 Student 的类,如下所示。班级跟踪 学生的作业成绩。

一个。实例(或成员)私有变量——名称(字符串)、作业 (一个整数 ArrayList)。

b.以名称为参数的单个构造函数。另外,初始化 作业数组列表。

c。 name 实例变量的公共 get 和 set 方法。

d。一个 void addHomeworkGrade 方法,它接受一个参数—— 新的作业成绩。

e。一个不带参数的公共 computeAverage 方法,并且 返回一个双精度值,显示此作业的平均成绩 学生。

f。重写 toString 方法以返回 this 的字符串表示 格式为“The 的平均成绩是”的对象。

我在下面插入的代码来自我的 Student 类,我还将有另一个名为 Test 的类,其中包含文件读取器和缓冲区读取器来读取文本文件。有人可以帮我验证这段代码是否正确,尤其是创建和初始化数组以及 void addHomeworkGrade 方法。提前谢谢你。

import java.text.DecimalFormat;
import java.util.ArrayList;

 public class Student {

// Declare the variables

private String name;
private int homework1;
private int homework2;
private int homework3;
private int homework4;
private int homework5;
private int homework6;

// Constructor

public Student(String name) {
    this.name = name;
}

//Create and initialize homeworks array list
ArrayList<Integer> homeworkList = new ArrayList<Integer>();


// setter or mutator methods change the field values
public void setName(String x) {
}

// Accessor or getter methods provide the field values
public String getName() {
    return name;
}

//A void addHomeworkGrade with one argument - to get homework grade
public String addHomeworkGrade() {

    DecimalFormat pattern = new DecimalFormat("0.00");
    double homeworkGrade;
    homeworkGrade = (homework1 + homework2 + homework3 + homework4 + homework5 + homework6);
    return pattern.format(homeworkGrade);
}

// other methods perform operations on Employee data
public String computeAverage() {

    DecimalFormat pattern = new DecimalFormat("0.00");
    double average;
    average = ((homework1 + homework2 + homework3 + homework4 + homework5 + homework6) / 6.00);
    return pattern.format(average);
}

// Override the toString method to return the string representation
public String toString() {
    return (getName() + "'s average grade is " + computeAverage());

}

}

【问题讨论】:

  • 您似乎没有问题,只有请求。
  • 为什么要创建一个数组列表,然后甚至不使用它?
  • 必须使用成绩列表时为什么还要使用 homeworkX 变量?
  • 希望 stackoverflow 做他的功课
  • 使用你的ArrayList,并用它的大小替换6.00(因为硬编码的值不好)。通过使用它,我的意思是填充它并替换所有 x+y+z 代码。使用某种循环对其内容求和

标签: java methods arraylist constructor void


【解决方案1】:

您需要做的只是拥有列表,而不是单个变量。然后你的方法'addHomeworkGrade'需要接受一个整数,将它添加到列表中,它不需要返回任何东西。然后在“computeAverage”中,将列表中的所有值相加,除以它的长度,然后返回它。这有意义吗?如果你愿意,我可以提供代码 sn-ps(但不想为你写完整的东西)。

【讨论】:

  • 我理解您的意思,但将其生成代码是另一回事。如果您不介意提供代码 sn-ps,将不胜感激。
  • 好的,所以 ArrayList 是一个动态大小的对象列表,在您的情况下是数字。这意味着你可以做的就是把你所有的成绩都放进去,你的成绩和学生一样多。我想当你第一次得到骨架类时,add 方法看起来像这样:public void addHomeworkGrade(int Grade)。在此方法中您需要做的是获取传入的成绩,并将其添加到列表中。您可以使用 ArrayList 上的 .add 方法执行此操作。 (int 很可能是一个整数)。这是你的第一步。
  • 顺便说一句,'a void method' 是一种不返回任何东西的方法
  • 一旦你有了这个,现在你需要计算平均值。为此,您需要遍历arraylist(请去谷歌搜索如何执行此操作,它非常简单)将所有值一起添加。然后将结果除以 arraylist 中的元素数(使用 '.size()' 找到),然后返回结果。
  • 是的,我完全理解你可以这样做,但我认为我的教授要求我做的是使用当前存储的文件阅读器和缓冲区阅读器从文本中获取这些作业值在另一个班级。我不认为他希望我们最初将值插入到 ArrayList 中。这有意义吗
猜你喜欢
  • 2014-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多