Çalışanların ve diğer staaffların ödemeleri ile ilgili bir program yazmaya çalışıyorum, Employee adlı bir soyut süper sınıfım var, ve o zaman aşağıdaki FullTimeEmployee, PartTimeEmployee , Siparişler ve Satıcı, Çalışanın alt sınıflarıdır. Her satış için alacağı bonusu hesaplamaya çalıştığım Salesman'daki boş göstericilerle ilgili bir sorunum var. Burada JAVA (nullpointer istisnası) ile çalışan bir programda yardıma ihtiyacım var
iOrders[] array=new Orders[20];
array[0]=new Orders(1,"14/5/2010","agora aftolinitwn",2000.0);
array[1]=new Orders(2,"14/5/2010","agora aftolinitwn",20000.0);
Salesman sales1 =new Salesman("giannis", "antoniou",35, "vavilonos 7", "leffkosia",11475,69486931,"gä[email protected]",100,40,160.0,"salesman",2,1300.0,array);
Salesman sales2 =new Salesman("andreas", "antoniou",35, "vavilonos 7", "lefkosia",11475,69486931,"ä[email protected]",100,41,160.0,"salesman",1,1200.0,array);
sahip ana içinde
public Salesman(String firstname, String lastname,int code, String address, String city,int tk,int phone,String email,int deptcode,int card,double hours,String cat,int orderno,double salary,Orders[] ord/*,double sales*/){
super( firstname, lastname, code, address, city, tk, phone, email, deptcode, card, hours, cat);
this.orderno=orderno;
setBaseSalary(salary);
//setGrossSales(sales);
Orders[] order= ord.clone();//new Orders[orderno];//create the array for the orders made by this salesman
//order=ord;
setSallary(order);
}
public void setSallary(Orders[] order){
//double sum=0;
for(int i=0;i<=order.length;) {
grossSales+=order[i++].getamount(); //get the value of the sales done
System.out.println(grossSales);
}
if (grossSales<10000){
baseSalary+=baseSalary*0.05;
}
else if((grossSales>=10000)||(grossSales<=20000)){
baseSalary+=baseSalary*0.07;
}
else
baseSalary+=baseSalary*0.1;
}
Satıcı sınıfta benim kodudur temelde ben o zaman salsmans bilgi (vb satışından elde tutar) ve bir dizi yaratıyor ne Saleman Yapıcısına yollamak. Daha sonra bono dizisini başka bir diziye kopyalayıp bonusu dengelemek için deneyin. ama "ana" java.lang.NullPointerException dizisindeki
İstisna olsun
at misthodosia.Salesman.setSallary(Salesman.java:36)
at misthodosia.Salesman.<init>(Salesman.java:28)
at misthodosia.Misthodosia.main(Misthodosia.java:30)
Java Sonuç: heres 1
Siparişleri sınıf yanı
public class Orders {
private int orderNo;
private String orderDate;
private String description;
private double orderAmount;
private Salesman man;
public Orders(int no,String date,String descrip,double amount/*,Salesman man*/){
orderNo=no;
orderDate=date;
description=descrip;
orderAmount=amount;
//this.man=man;
//Orders[] orders=new Orders[orderNo];//create the array for the orders made by this salesman
}
public double getamount(){
return orderAmount;
}
Yardımcı olabilir misin? Ben nesne dizisi ile yanlış bir şey yapıyorum biliyorum ama çözemiyorum: S
Salesman.java' 36 hattında hangi kod var? –
'order.length' doğru olarak 1 değerine ayarlandı mı? – steabert
Her şeyden önce cevaplarınız için hepinize teşekkür ederim. Ben kullanıcı dizi listesi diyelim, bu satırı nasıl dönüştürüyorum grossSales + = order [i ++]. Getamount(); dizi listesiyle çalışmak için? Listedeki her öğe için bu değeri almam gerekiyor? – George