烦死我勒 2022-04-21 22:36 采纳率: 82.4%
浏览 40
已结题

java这句具体是什么错误

题目是创建员工数组,分别创建若干不同的员工对象,并打印某个月工资
public class main {
public static void main(String[]args) {
Employee[] em =new Employee[] {
new Salariedmploye("李华",7,5000),
new HourlyEmploye ("李丽",9,100,180),
new SalesEmploye ("边五",5,5600,0.56),
new BasePlusSalesEmploye("苏卿",30,3000,0.56,5000),
};
for (int i=0;i< em.length;i++) {
**print(em [i],5); ** (这句报错了 错误是: Cannot make a static reference to the non-static method print(Employee,int) from the type main )请问为什么这句会报错
}
}
public void print(Employe e,int mouth) {
System.out.println("该员工的工资为:"+e.getSalary(mouth));
}
}
class Employe {
private String name;
private int mouth;

         public Employee(String name,int mouth) {
             this.name=name;
             this.mouth=mouth;
         }
         
         public double getSalary(int mouth){
             if(mouth != this.mouth) {
                 return 0.0;
             }
             else {
                return 100.0;
            }
         }

}

class SalariedEmploye extends Employe{
private double salary;

public SalariedEmploye(String name,int mouth,double salary) {
super(name,mouth);
this.salary=salary;
}
public double getSalary(int mouth) {
double pride= super.getSalary(mouth);
return salary+pride;

}
}

这是部分 后面都没报错

  • 写回答

3条回答 默认 最新

  • 全栈小5 全栈领域优质创作者 2022-04-21 22:52
    关注

    1、原因
    1)public static void main,这个是静态风法
    2)自定义的print方法,是定义在非静态类的非静态方法
    因此,静态类方法下不可调用非静态方法,所以会报错
    2、修改
    public void print,改为public static void print

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月30日
  • 已采纳回答 4月22日
  • 创建了问题 4月21日

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算