当引入swing.JOptionPane和 text.DecimalFormat后,程序正确,能编译但不能得到答案,而是
Exception in thread "main" java.lang.NullPointerException
at com.water1.Test.main(Test.java:25) 然后检查,发现找不到源,但在其他电脑上能编译得到正确答案,请问是配置没弄好,还是什么原因?怎么才能弄好!谢谢
Exception in thread "main" java.lang.NullPointerException
at com.water1.Test.main(Test.java:25) 然后检查,发现找不到源,但在其他电脑上能编译得到正确答案,请问是配置没弄好,还是什么原因?怎么才能弄好!谢谢
package com.employee;public abstract class Employee {
private String firstName;
private String lastName;
public Employee(String first,String last) {
firstName=first;
lastName=last;
}/**
* @return firstName
*/
public String getFirstName() {
return firstName;
}/**
* @return lastName
*/
public String getLastName() {
return lastName;
}public String toString() {
return firstName+' '+lastName;
}public abstract double earings();
}
package com.employee;public final class Boss extends Employee { private double weeklySalary;
public Boss(String first,String last,double s) {
super(first,last);
setWeeklySalary(s);
}
public double earings() {
return weeklySalary;
}
/**
* @param weeklySalary 要设置的 weeklySalary
*/
public void setWeeklySalary(double s) {
weeklySalary=(s>0?s:0);
}
public String toString() {
return "经理:"+super.toString();
}}
package com.employee;import com.sun.java_cup.internal.internal_error;public final class CommissionWorker extends Employee { private double salary;
private double commission;
private int quantity;
public CommissionWorker(String first,String last,double s,double c,int q) {
super(first, last);
setSalary(s);
setCommission(c);
setQuantity(q);
}
@Override
public double earings() {
// TODO 自动生成方法存根
return salary+commission*quantity;
}
/**
* @param commission 要设置的 commission
*/
public void setCommission(double commission) {
this.commission = commission;
}
/**
* @param quantity 要设置的 quantity
*/
public void setQuantity(int quantity) {
this.quantity = quantity;
}
/**
* @param salary 要设置的 salary
*/
public void setSalary(double salary) {
this.salary = salary;
}
public String toString() {
return "普通员工:"+super.toString();
}
}
package com.employee;public final class HourlyWorker extends Employee {
private double wage;
private double hours;
public HourlyWorker(String first,String last,double w,double h) {
super(first, last);
setHours(h);
setWage(w);
}
public void setWage(double wage) {
this.wage=wage;
}
/**
* @param hours 要设置的 hours
*/
public void setHours(double hours) {
this.hours = hours;
} @Override
public double earings() {
return wage*hours;
}
public String toString() {
return "计时工人:"+super.toString();
}
}
package com.employee;public final class PieceWorker extends Employee { private double wagePerPiece;
private int quantity;
public PieceWorker(String first,String last,double w,int q) {
super(first, last);
setQuantity(q);
setWagePerPiece(w);
} /**
* @param quantity 要设置的 quantity
*/
public void setQuantity(int quantity) {
this.quantity = quantity;
} /**
* @param wagePerPiece 要设置的 wagePerPiece
*/
public void setWagePerPiece(double wagePerPiece) {
this.wagePerPiece = wagePerPiece;
} @Override
public double earings() {
// TODO 自动生成方法存根
return quantity*wagePerPiece;
}
public String toString() {
return "计件工人"+super.toString();
}
}
package com.employee;import java.text.DecimalFormat;import javax.swing.JOptionPane;public class Test { /**
* @param args
*/
public static void main(String[] args) {
Employee ref;
String output="";
Boss boss=new Boss("是","计划",800.00);
CommissionWorker c=new CommissionWorker("w","f",400.0,4.0,130);
PieceWorker p=new PieceWorker("bao","li",2.7,200);
HourlyWorker h=new HourlyWorker("ke","peng",13.75,40);
DecimalFormat pre=new DecimalFormat("0.00");
ref=boss;
output+=ref.toString()+"afsd"+pre.format(ref.earings())+"\n"+boss.toString()+
"asdf"+pre.format(boss.earings())+"\n";
ref=c;
output+=ref.toString()+"afsd"+pre.format(ref.earings())+"\n"+c.toString()+
"asdf"+pre.format(c.earings())+"\n";
ref=p;
output+=ref.toString()+"afsd"+pre.format(ref.earings())+"\n"+p.toString()+
"asdf"+pre.format(p.earings())+"\n";
ref=h;
output+=ref.toString()+"afsd"+pre.format(ref.earings())+"\n"+h.toString()+
"asdf"+pre.format(h.earings())+"\n";
JOptionPane.showMessageDialog(null,output, "demo",JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}}