public static void main(String[] args) {
Company c = new Company();
PerHourWorker phw1 = new PerHourWorker();
phw1.setPerHourSalary(10);
phw1.setWorkTime(200);
PerHourWorker phw2 = new PerHourWorker();
phw2.setPerHourSalary(10);
phw2.setWorkTime(230);
SalesWorker sw1 = new SalesWorker();
sw1.setAllSalary(5000);
SalesWorker sw2 = new SalesWorker();
sw2.setAllSalary(200000);
CommonWorker cw = new CommonWorker();
cw.setWorkTime(205);
c.addEmployee(phw1);
c.addEmployee(phw2);
c.addEmployee(sw1);
c.addEmployee(sw2);
c.addEmployee(cw);
//输出总共应付的工资
c.showAllSalary(c.employee);
/*
* 添加首饰工人
*/
DecorateWorker dw = new DecorateWorker();
dw.setProduceNumber(30);
c.addEmployee(dw);
//输出总共应付的工资
c.showAllSalary(c.employee);
}
编译这样报错
Exception in thread "main" java.lang.NullPointerException
at 第三次.Main.main(Main.java:36)
Company c = new Company();
PerHourWorker phw1 = new PerHourWorker();
phw1.setPerHourSalary(10);
phw1.setWorkTime(200);
PerHourWorker phw2 = new PerHourWorker();
phw2.setPerHourSalary(10);
phw2.setWorkTime(230);
SalesWorker sw1 = new SalesWorker();
sw1.setAllSalary(5000);
SalesWorker sw2 = new SalesWorker();
sw2.setAllSalary(200000);
CommonWorker cw = new CommonWorker();
cw.setWorkTime(205);
c.addEmployee(phw1);
c.addEmployee(phw2);
c.addEmployee(sw1);
c.addEmployee(sw2);
c.addEmployee(cw);
//输出总共应付的工资
c.showAllSalary(c.employee);
/*
* 添加首饰工人
*/
DecorateWorker dw = new DecorateWorker();
dw.setProduceNumber(30);
c.addEmployee(dw);
//输出总共应付的工资
c.showAllSalary(c.employee);
}
编译这样报错
Exception in thread "main" java.lang.NullPointerException
at 第三次.Main.main(Main.java:36)
解决方案 »
- hibernate fetch=FetchType.LAZY问题
- 无法获取 可编辑jcombobox 焦点事件
- 菜鸟请教高手
- 集合相减操作为什么总是抛出异常java.lang.UnsupportedOperationException
- 线程问题?
- 为什么我的JBUILDER5中的编辑器有这样的问题?
- 谁能告诉我JBuiler4 的Serial Number 和 key,我装了却没法注册,不胜感激,急!!!!
- 如何在Jbuilder中生成win32可执行程序.
- 为什么我的IE不能正确的支持Applet?
- JAVA 中如何实现图象的渐隐和渐显?
- JAVA中一个很有趣的问题!
- winword.exe 无法释放
把这个方法也贴出来
Employee employee[] = new Employee[10000];//定义一个职工类数组
/*
* 添加一个员工
*/
public void addEmployee(Employee employee1) {
int i=0;
if(i<employee.length) {
employee[i] = employee1;i++;
}else {
System.out.println("数组空间已满,请重新分配内存!");}
}
/*
* 通过员工的名字来删除员工
*/
public void deleteEmployee(Employee employee1) {
int i = 0;
/*
* 当所给的人员与数组中当前的人员信息不一致时则向后继续查找
* */
while(i<employee.length && !(employee[i].equals(employee1))) {
i ++;
}
for(; i<employee.length; i++) {
employee[i] = employee[i+1];
}
}
/*
* 通过员工的名字来显示员工的工资
*/
public void showSalary(Employee employee1) {
int i = 0;
while(i<employee.length && employee[i].equals(employee1)) {
System.out.println("职工的姓名为:" + employee1.name);
System.out.println("职工的工资为" + employee1.computeSalary());
}
}
/*
* 输出所有员工的工资和
* */
public void showAllSalary(Employee employ[]) {
double salary = 0;
for(int i=0; i<employ.length; i++) {
salary = salary + employ[i].computeSalary();
}
System.out.println("所有员工的工资总和为:" + salary);
}}
package csdn;public class Company {
Employee employee[] = new Employee[10000];// 定义一个职工类数组 /*
* 添加一个员工
*/
public void addEmployee(Employee employee1) {
int i = 0;
// ADD1 START
while (i < employee.length && !(employee[i] == null)) {
i++;
}
// ADD1 END
if (i < employee.length) {
employee[i] = employee1;
// del1 i++;
} else {
System.out.println("数组空间已满,请重新分配内存!");
}
} /*
* 通过员工的名字来删除员工
*/
public void deleteEmployee(Employee employee1) {
int i = 0;
/*
* 当所给的人员与数组中当前的人员信息不一致时则向后继续查找
*/
while (i < employee.length && !(employee[i] == employee1)) {
i++;
}
for (; i < employee.length; i++) {
employee[i] = employee[i + 1];
}
} /*
* 通过员工的名字来显示员工的工资
*/
public void showSalary(Employee employee1) {
int i = 0;
while (i < employee.length && !(employee[i] == null)) {
System.out.println("职工的姓名为:" + employee1.name);
System.out.println("职工的工资为" + employee1.computeSalary());
}
} /*
* 输出所有员工的工资和
*/
public void showAllSalary(Employee employ[]) {
double salary = 0;
for (int i = 0; i < countEmployee(employ); i++) {// edit2 for (int i =
// 0; i <
// employ.length;
// i++) {
salary = salary + employ[i].computeSalary();
}
System.out.println("所有员工的工资总和为:" + salary);
} // add2 start
public int countEmployee(Employee employ[]) {
int i = 0;
while (i < employee.length && !(employee[i] == null)) {
i++;
}
return i;
} // add2 end
public static void main(String[] args) { Company c = new Company(); Employee phw1 = new Employee(); c.addEmployee(phw1);
Employee phw2 = new Employee(); c.addEmployee(phw2); // 输出总共应付的工资
c.showAllSalary(c.employee);
}
}