(JAVA)我需要帮助创建一个带有getter和setter的类,创建一个带有数组的类,然后调用另一个类。

时间:2013-11-12 16:18:06

标签: java arrays

这是我的目标 - 你必须创建2个类:  1.学生班       属性 创建一个包含3个属性(实例变量)的Student类 ◦name(String) ◦期中(双) ◦sealExam(双)  方法 为每个属性定义setter / getters。因此,您必须总共创建3个setter和3个getter。 在midterm和finalExam的制定者中,你必须检查给定的等级是否有效。等级必须在0-100之间。如果无效,请输出错误消息“等级无效!” 定义一个方法getFinalGrade,它根据以下评分方案计算最终成绩。计算完毕后,返回最终成绩的结果。 ◦评分: ▪期中:40% ▪期末考试:60% 定义一个方法showGrades,它输出属性的细节。等级应显示为只有两位小数的数字。 (见例子) ◦输出示例:“姓名:Tom,Midterm:90.00,期末考试:80.00,最终成绩:82.00”

  1. GradeCalculator类 创建GradeCalculator类并将所有内容(步骤1到步骤4)放在main方法中。 第1步:创建一个名为studentArray的Student数组,其长度为5。 第2步:使用循环创建5个Student对象。要求用户一次输入一个名称,期中考试,期末考试(提示用户)并通过调用相应的设置者将这些存储在相应的属性中。设置完所有值后,将新创建的Student对象存储到studentArray。 第3步:循环studentArray,通过调用showGrades打印出每个学生的详细信息。 第4步:计算这5名学生的平均最终成绩并在屏幕上打印出来。等级应显示为只有两位小数的数字。
  2. 这是我到目前为止编写的代码:

    public class Student {
    
    private String name;
    private double midterm;
    private double finalExam;
    private double finalGrade;
    
    public Student(String n, double a, double m)
    {
        name = n;
        midterm = a;
        finalExam = m;
    }
    
    
    public String getName()
    {
        return (name);
    }
    public double getmidterm()
    {
        return (midterm);
    }
    
    if (midterm < 0)
    {
    midterm = 0;
    System.out.println("The grade is invalid! Grade will be entered as 0.");
    }
    if (midterm >100)
    {
    midterm = 100;
    System.out.println("The grade is invalid! Grade will be entered as 100.");
    }
    else
    {
    System.out.println("Midterm grade recorded." + midterm);
    }
    public double getfinalExam()
    {
        return (finalExam);
    }
    
    if (finalExam < 0)
    {
        finalExam = 0;
        System.out.println("The grade is invalid");
    }
    if (finalExam > 100)
    {
        finalExam = 100;}
        System.out.println("The grade is invalid! Grade will be entered as 100.");
    }
    else
    {
        System.out.println("Final Exam grade recorded." + finalExam);
    }
    public double getfinalGrade()
    {
    finalGrade = (midterm * .40) + (finalExam * .60);
        return (finalGrade);
    }
    public double showGrades()
    {
    System.out.println("Name:" + name + "midterm:" + midterm + "Final Exam:"  + finalExam);
    }
    public void setName(String studentName) 
    {
        name = studentName;
    }
    public void setMidterm(double midtermGrade)
    {
        midtermGrade = midterm;
    }
    public void setFinal(double finalGrade)
    {
        finalGrade = finalExam;
    }
    

    代码:

    public class GradeStudents{
    Student[] students;
    import java.util.Scanner;
    
    GradeStudents(){}
    
    public static void main(String[] args)  {
    
    String[] studentarr = new String[5];
    
    for(double i = 0; i < 5; i++);
        { //insert what the for loop executes here}
    }
    
    
    }
    
    }
    

3 个答案:

答案 0 :(得分:0)

这符合你的问题吗?

public static void main(String[] args)  {

Student[] studentarr = new Student[5];

for(double i = 0; i < 5; i++);
{ 
   studentarr[i] = new Student(params...);
}

studentarr[0].someStudentMethod();

}

答案 1 :(得分:0)

最好的方法是我想用数据填充一些数组并运行代码以查看是否有输出或错误。

学生数据来自哪里?通过用户界面输入或文本,xml或json文件?

答案 2 :(得分:0)

看起来你在方法之外有一个If语句,因此程序可能会向你抛出错误/异常。

只是这段代码的一小部分

public double getmidterm()
{
    return (midterm);
}
// Potentially an error here
if (midterm < 0)
{
midterm = 0;
System.out.println("The grade is invalid! Grade will be entered as 0.");
}

您可能希望将这些if语句放在方法中,并在测试类(main方法)中调用此方法。

此外,您正在定义get和set方法,但它们不返回值(在本例中):

public double showGrades()
{
System.out.println("Name:" + name + "midterm:" + midterm + "Final Exam:"  + finalExam);
}

在这里你应该将一个double而不是println返回到控制台。

如果你有一个toString方法给回学生,你应该能够在你的循环中调用student.toString(),它将显示你想要的值。