-5

这是我的目标——你必须创建 2 个类: 1. Student 类属性 创建一个具有 3 个属性(实例变量)的 Student 类,包括 ◦ name (String) ◦ midterm (double) ◦ finalExam (double) 方法定义 setters/每个属性的吸气剂。因此,您必须总共创建 3 个 setter 和 3 个 getter。在期中考试和期末考试的设置中,您必须检查给定的成绩是否有效。等级必须在 0-100 之间。如果无效,打印错误信息“成绩无效!” 定义一个方法 getFinalGrade,它根据以下评分方案计算最终成绩。计算完成后,返回最终成绩结果。◦ 评分: ▪ 期中考试:40% ▪ 期末考试:60% 定义一个方法,showGrades,输出属性的详细信息。成绩应显示为仅保留两位小数的数字。(见示例) ◦ 输出示例:“姓名:Tom,期中考试:90.00,期末考试:80.00,期末成绩:82.00”

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

这是我迄今为止编写的代码:

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}
}


}

}
4

3 回答 3

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();

}
于 2013-11-12T16:32:14.480 回答
0

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

学生数据从何而来?通过用户界面输入还是来自文本、xml 或 json 文件?

于 2013-11-12T16:32:21.027 回答
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 语句放在一个方法中,并在您的测试类(主方法)中调用此方法。

此外,您正在定义 get 和 set 方法,但它们不返回值(在这种情况下):

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

在这里,您应该将 double 而不是 println 返回到控制台。

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

于 2013-11-12T16:33:08.143 回答