繁体   English   中英

Java 为什么我需要这种方法以及如何使用它

[英]Java why do I need this method and how do I use it

这是我的Java类的一个作业,问题如下:

修改本章介绍的学生类如下。 每个学生对象还应包含三个测试的分数。 提供基于参数值设置所有实例值的构造函数。 重载构造函数,使得每个测试点最初都被假定为零。 提供一个名为 setTestScore 的方法,它接受两个参数:测试编号(1 到 3)和分数。 还提供了一个名为 getTestScore 的方法,它接受测试编号并返回适当的分数。 提供一个名为 average 的方法,用于计算并返回该学生的平均考试成绩。 修改 toString 方法,使测试分数和平均值包含在学生的描述中。 修改驱动程序类的 main 方法以使用新的 Student 方法。

所以我让程序运行,我得到了正确的输出。 我的问题是为什么我需要 getTestScore 方法。 我没有使用它来获得正确的输出。 我的代码目前的编写方式是否存在缺陷,还是我只是“需要”它来满足分配要求?

这是我的代码:
学生体.java

public class StudentBody 
{
    //-------------------------------------------------------------------
    //  Creates some Address and Student objects and prints them.
    //-------------------------------------------------------------------
    public static void main(String[] args)
    {
        Address school = new Address("800 Lancaster Ave.", "Villanova", "PA", 19085);

        Address jHome = new Address("21 Jump Street", "Blacksburg", "VA", 24551);

        Student john = new Student("John", "Smith", jHome, school);

        Address mHome = new Address("123 Main Street", "Euclid", "OH", 44132);

        Student marsha = new Student("Marsha", "Jones", mHome, school);

        john.setTestScore(1, 93);
        john.setTestScore(2, 86);
        john.setTestScore(3, 77);
        john.average();

        marsha.setTestScore(1, 82);
        marsha.setTestScore(2, 91);
        marsha.setTestScore(3, 97);
        marsha.average();

        System.out.println(john);
        System.out.println();
        System.out.println(marsha);
    }

}

学生.java

    public class Student 
    {
        private String firstName, lastName;
        private Address homeAddress, schoolAddress;
        private int test1, test2, test3;
        private double averageScore;

        //-------------------------------------------------------------------
        // Constructor: Sets up this student with the specified values.
        //-------------------------------------------------------------------
        public Student(String first, String last, Address home, Address school)
        {
            firstName = first;
            lastName = last;
            homeAddress = home;
            schoolAddress = school;
            test1 = 0;
            test2 = 0;
            test3 = 0;
        }

        //-------------------------------------------------------------------
        // Sets the test scores
        //-------------------------------------------------------------------
        public void setTestScore(int testNumber, int testScore)
        {
            switch(testNumber)
            {
                case 1:
                    test1 = testScore;
                    break;

                case 2:
                    test2 = testScore;
                    break;

                case 3:
                    test3 = testScore;
                    break;

                default:
                    return;

            }
        }

        //-------------------------------------------------------------------
        // Gets the test scores
        // Not sure why I should call this method
        //-------------------------------------------------------------------
        public int getTestScore(int testNumber)
        {
            switch(testNumber)
            {
                case 1:
                    return test1;

                case 2:
                    return test2;

                case 3:
                    return test3;

                default:
                    return 0;

            }
        }

        //-------------------------------------------------------------------
        // Averages the test scores
        //-------------------------------------------------------------------
        public void average()
        {
            averageScore = (test1 + test2 + test3)/3;
            return;
        }

        //-------------------------------------------------------------------
        // Returns a string description of this Student object.
        //-------------------------------------------------------------------
        public String toString()
        {
            String result;

            result = firstName + " " + lastName + "\n";
            result += "Home Address:\n" + homeAddress + "\n";
            result += "School Address:\n" + schoolAddress +"\n";
            result += "Test Scores:\n";
            result += "Test #1: " + test1 + "\n";
            result += "Test #2: " + test2 + "\n";
            result += "Test #3: " + test3 + "\n";
            result += "Average Score: " + averageScore ;

            return result;
        }

    }

地址.java

public class Address 
{
    private String streetAddress, city, state;
    private long zipCode;

    //-------------------------------------------------------------------
    // Constructor: Sets up this address with the specified data.
    //-------------------------------------------------------------------
    public Address(String street, String town, String st, long zip)
    {
        streetAddress = street;
        city = town;
        state = st;
        zipCode = zip;
    }

    //-------------------------------------------------------------------
    // Returns a description of this Address object.
    //-------------------------------------------------------------------
    public String toString()
    {
        String result;

        result = streetAddress + "\n";
        result += city + ", " + state + " " + zipCode;

        return result;
    }

}

我的输出:

John Smith 家庭地址:21 Jump Street Blacksburg, VA 24551 学校地址:800 Lancaster Ave. Villanova, PA 19085 测试分数:测试 #1:93 测试 #2:86 测试 #3:77 平均分:85.0

Marsha Jones 家庭地址:123 Main Street Euclid, OH 44132 学校地址:800 Lancaster Ave. Villanova, PA 19085 测试分数:测试 #1:82 测试 #2:91 测试 #3:97 平均分数:90.0

我很想使用数组而不是为每个测试使用单独的变量。 你的班级处理过数组了吗? ArrayList 可能非常有用,尤其是在更接近真实世界场景的情况下,其中测试的数量可能会发生变化。

使用数组时,实际上对于 getScore(int testID) 会有很好的用例。 您可以在循环中使用此方法,该循环遍历数组中的所有分数以获取分数以计算平均值。

PS 为什么人们投票否决这个问题,然后不发布他们这样做的原因? 在我看来,OP 并不是在寻求解决方案或帮助做功课,只是想获得一些见解。

你是对的,它没有被使用。 但是您似乎错过了一个要求:

修改驱动程序类的 main 方法以使用新的 Student 方法。

这意味着,至少对我而言,您添加的方法(包括 getter)应该在main()方法中的某处调用。

这完全是语义上的争论,并且在任何意义上都无关紧要。

然而......争论不重要的事物的语义并编写不必要的代码来满足由独立主管编写的任意要求对于任何以开发人员的身份进入劳动力市场的人来说都是一个令人惊讶的恰当教训。 所以,把它当作一个教训,编写代码,然后继续。

你使用它只是为了满足任务。 没有必要成为那里的吸气剂。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM