我编码正确吗?我该怎么做才能修复这些错误?



我创建了一个名为"grade"的类。我的说明说该类需要 3 个方法和 2 个构造函数。我要使用的 3 种方法是

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

第一个构造函数不应接受任何参数,并将数字实例变量的初始值设置为零。第二个应该接受一个整数值,并使用它来设置数字实例变量的初始值。在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 个构造函数(默认构造函数和参数化构造函数(。您可以参考下面的代码来执行您在问题中解释的操作。

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;
}
*/
}

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

public class Grade {
private int number;
private String letterGrade;
public Grade()
{
number = 0; //an int is 0 by default, this is not neccessary.
}
public void setNumber(int number) {
this.number = number;
}
public int getNumber() { 
return number; 
}
public String getLetter() {
return letterGrade;
}
}

相关内容

最新更新