Java遇'incompatible types'与'void type not allowed here'错误求助
Java Student类编译错误解决
错误根源分析
- getName()方法返回值类型不匹配
你定义的getName()方法返回值类型大概率写成了void,但实际要返回String类型的name变量,导致return name触发类型不兼容错误。 - main方法调用错误
因为getName()是void类型(无返回值),你直接把它放在System.out.println()里调用,就会触发"void type not allowed here"错误。另外,main方法的void修饰符不能改——Java规定main方法的签名必须是public static void main(String[] args),修改它只会引发新问题。
正确代码示例
以下是符合你需求的Student类代码,可输出Louie/1.0和Felix/3.7:
public class Student { private String name; private double gpa; // 构造方法初始化属性 public Student(String name, double gpa) { this.name = name; this.gpa = gpa; } // 正确声明返回值类型的getName方法 public String getName() { return name; } // 对应的GPA获取方法 public double getGpa() { return gpa; } public static void main(String[] args) { Student student1 = new Student("Louie", 1.0); Student student2 = new Student("Felix", 3.7); // 调用有返回值的get方法拼接输出 System.out.println(student1.getName() + "/" + student1.getGpa()); System.out.println(student2.getName() + "/" + student2.getGpa()); } }
关键注意点
- 凡是需要返回数据的方法,必须声明对应返回值类型(比如
getName()用String,getGpa()用double),不能用void。 - main方法作为程序入口,其签名是固定规范,不能随意修改修饰符。
内容的提问来源于stack exchange,提问作者Leah Giselle
相关产品推荐
相关产品推荐

