如何为另一个实例变量设置一个等于一个变量的值

How to set a value equal to one variable for another instance variable

给定以下声明:

class Student {
    private double GPA;
    private String name;
    Student s = new Student();
    public void setGPA(double GPA) {
        this.GPA = GPA;
    }enter code here
    public double getGPA() {
        return GPA;
    }
}

问题:假设s是class学生的一个实例(对象),给s的GPA分配3.5的语句是什么?

你写的问题没有多大意义。

问题是,如果您尝试创建 Student 对象,所编写的代码将 "blow up"。您的 Student class 有一个字段 s 试图初始化为 另一个 Student 对象。试图创建另一个。试图创建另一个....

你看到照片了吗?

你的 s 不应该在那里。 Student 拥有一个本身就是 Student

的字段是没有意义的

这意味着您关于如何设置无法成功实例化的对象的字段之一(见上文)的问题没有意义。


这是一个确实有意义的版本:

class Student {
    private double GPA;
    private String name;

    public void setGPA(double GPA) {
        this.GPA = GPA;
    }

    public double getGPA() {
        return GPA;
    }

    public static void main(String args[]) {
        Student s = new Student();
        s.setGPA(3.5);   // This is the statement!
        System.out.println("Score is " + s.getGPA());
    }
}

ohhh, i didn't know what set even existed

您的代码明确声明了 setGPA 方法...所以它当然存在!

我认为您需要返回教程、讲义、教科书,无论您从中学到什么,然后阅读 Java class 的结构。什么是字段,什么是方法,什么是构造函数....以及如何使用它们。

这是一个解决方案,您的学生 class 可用于创建对象,我们需要对该对象的一些引用才能更改值。这里的s称为student的instance,那个s指的就是你的student。当您在 java 中写入 new 单词时,这意味着您正在创建一些新对象(在本例中为学生)。

public class test {
    public static void main(String [] args) {
        Student s = new Student();
        s.setGPA(3.5); //set Gpa
        System.out.println(s.getGPA());
    }

}
    class Student {
        private double GPA;
        private String name;


        public void setGPA(double GPA) {
            this.GPA = GPA;
        }


        public double getGPA() {
            return GPA;

    }

}

或者您可以在学生 class 中使用构造函数来初始化 Gpa 来创建这样的对象。但是您可以稍后使用 setter 和 getter 来操作这些值。

public class test {
    public static void main(String [] args) {
        Student s = new Student(5,"Khan");
        System.out.println("The given Gpa is " + s.getGPA() + " and name is " + s.getName());
        s.setGPA(3.5); //change Gpa
        System.out.println(s.getGPA()+ "The gpa has been changed");
    }

}
    class Student {
        private double GPA;
        private String name;
        public Student(double Gp,String Name) {
            this.GPA = Gp;
            this.name = Name;
        }

        public String getName() {
            return this.name;
        }

        public void setGPA(double GPA) {
            this.GPA = GPA;
        }


        public double getGPA() {
            return GPA;

    }

}