【问题标题】:(JAVA) I need help creating a class with getters and setters, creating a class with an array and then calling upon the other class. [closed](JAVA) 我需要帮助创建一个带有 getter 和 setter 的类,创建一个带有数组的类,然后调用另一个类。 [关闭]
【发布时间】:2013-11-12 16:18:06
【问题描述】:

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

  1. 成绩计算器类 创建一个 GradeCalculator 类并将所有内容(步骤 1 到步骤 4)放在 main 方法中。 第一步:创建一个Student数组,叫studentArray,长度为5。 第 2 步:使用循环创建 5 个学生对象。要求用户一次输入一个姓名、期中考试、期末考试(提示用户),并通过调用适当的设置器将这些存储在相应的属性中。设置完所有值后,将新创建的 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}
}


}

}

【问题讨论】:

  • 嗨,您这样做的具体问题是什么?成功了吗?
  • 这里不是让你做作业的地方。
  • 我的具体问题是我不确定如何在 GradeStudents 类中编写控制循环。我也不确定 Student 类的 getter 和 setter 是否正确。这不是家庭作业。我试图通过完成特定目标来学习 Java 编程。

标签: java arrays


【解决方案1】:

这符合您的问题吗?

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

}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 学生数据应该来自用户界面输入。
    【解决方案3】:

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

    只是这段代码的sn-p

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

    在这里,您应该向控制台返回双精度而不是 println。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-24
      • 2015-04-01
      相关资源
      最近更新 更多