我编码正确吗?我该怎么解决这些错误?

时间:2019-10-13 18:37:52

标签: java

我创建了一个名为“成绩”的类。我的指令说该类需要3个方法和2个构造函数。我要使用的3种方法是

  • "public void setNumber(int number)"
  • "public int getNumber()"
  • "public String getLetter()"

第一个构造函数不应接受任何参数,并将number实例变量的初始值设置为零。第二个应接受一个整数值,并使用它来设置数字实例变量的初始值。在getLetter()方法中,我有一条警告,指出“为其自身分配”。最后我还有一个错误,说“缺少返回语句”。我可以进行哪些更正?如何解决这些错误?我的代码如下。

public class Grade {

private int number;
private String letterGrade;

public void setNumber(int number) {
this.number = number;

}

public int getNumber() { 
return number; 

}
public String getLetter() {
    this.letterGrade = letterGrade;

}
}

2 个答案:

答案 0 :(得分:0)

您共享的代码没有任何构造函数,但是您已经提到需要使用2个构造函数(默认构造函数和参数化构造函数)。您可以参考下面的代码来完成问题中的解释。

public class Grade {

    private int number;
    private String letterGrade;

    //2 constructors as mentioned in question
    Grade() {
        this.number = 0;
        this.letterGrade = ""; //initialize to default value you decide upon
    }
    Grade(int n) {
        this.number = n;
        this.letterGrade = "sample"; //initialize to default value you decide upon
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public int getNumber() {
        return number;
    }
    public String getLetter() {
        //this.letterGrade = letterGrade; // "assignment to itself" error thrown because you are not passing
                                          // letterGrade as an argument to set the value to data-member
        return this.letterGrade;          // "missing return statement" error thrown as you missed return statement.
    }

    /* this is correct if choose to do so
    public String getLetter(String letterGrade ) {
        this.letterGrade = letterGrade ;
        return this.letterGrade;
    }
    */
}

答案 1 :(得分:0)

首先,这些方法都不是构造函数,构造函数没有返回类型规范,并且也具有该类的相同名称。其次,getLetter()的问题在于在上下文中没有letterGrade,也没有letterGrade变量作为参数传递,因此编译器检查{{1} }类,并确定存在一个具有该名称的变量,因此假定Grade行正在分配自身的自身值,即自赋值。这是您班级的更正代码

this.letterGrade = letterGrade;