提问者:小点点

遇到“错误:不兼容的类型:意外的返回值”和“错误:这里不允许使用'void'类型”


我对Java还是很陌生,我Java课程的这个实验问题已经困扰了一段时间,我认为一旦我的代码达到这一点,一切都很好:

public class Student {
   // TODO: Build Student class with private fields and methods listed above
   // private variables
   private String name;
   private double gpa;

   // TODO: Define two private member fields
   // default constructor
   public Student() {
      name = "Louie";
      gpa = 1.0;
   }
   
   public Student(String name, double gpa) {
      this.name = name;
      this.gpa = gpa;
   }
    
    public void getName() {
      // TODO: Assign parameter to instance field
      return name;
   }
    
   public void setName(String name) {
      // TODO: Assign parameter to instance field
      this.name = name;
   }
   
   public double getGPA() {
      // TODO: Assign parameter to instance field
      return gpa;
   }
   
   public void setGPA(double gpa) {
      // TODO: Assign parameter to instance field
      this.gpa = gpa;
   }
   
   // TODO: Add three more methods
   
   
   public static void main(String[] args) {
      Student student = new Student();
      System.out.println(student.getName() + "/" + student.getGPA());
      
      student.setName("Felix");
      student.setGPA(3.7);
      System.out.println(student.getName() + "/" + student.getGPA());
   }
}

但是后来我得到了这些错误:

Student.java:21:错误:不兼容类型:意外返回值返回名称;^Student.java:44:错误:此处不允许'void'类型System. out.println(学生.getName() "/" 学生.getGPA()); ^ Student.java:48:错误:此处不允许'void'类型System.out.println(学生.getName() "/" 学生.getGPA());

我试着用谷歌搜索错误,看看其他人是如何解决这些问题的,但是我会摆脱一个错误,遇到一个完全不同的错误。我不确定如何解决“意外返回值”错误。但是至于“这里不允许使用的void类型”,我尝试从“公共静态void main”中删除“void”,因为我看到推荐给遇到相同问题的其他人,但这会导致其他错误。

代码的预期结果应该类似于:Louie/1.0 Felix/3.7

我很困惑为什么主类有问题,因为这部分代码在我开始实验室时已经填写了。


共1个答案

匿名用户

在第21行,您返回的name类型为String,但您的getName()函数的签名是public void getName()。要将此更改void修复为Stringpublic String getName()