Java 正在更新ArrayList中的对象

Java 正在更新ArrayList中的对象,java,object,arraylist,Java,Object,Arraylist,我写了这段代码,一切似乎都是正确的,但不幸的是,它没有提供正确的单位出售。我试图找出销售人员ID是否存在,并更新该记录。有时它打印正确的信息,有时则不打印 import java.util.*; public class salesPerson { //salesPerson fields private int salespersonID; private String salespersonName; private St

我写了这段代码,一切似乎都是正确的,但不幸的是,它没有提供正确的单位出售。我试图找出销售人员ID是否存在,并更新该记录。有时它打印正确的信息,有时则不打印

 import java.util.*;
     public class salesPerson {

       //salesPerson fields
       private int salespersonID;
       private String salespersonName;
       private String productType;
       private int unitsSold = 0;
       private double unitPrice;

       //Constructor method
       public salesPerson(int salespersonID, String salespersonName, String productType, int unitsSold, double unitPrice)
       {
         this.salespersonID = salespersonID;
         this.salespersonName = salespersonName;
         this.productType = productType;
         this.unitsSold = unitsSold;
         this.unitPrice = unitPrice;
       }


       //Accessor for salesPerson
       public int getSalesPersonID(){
           return salespersonID;
        }

       public String getSalesPersonName(){
           return salespersonName;
       }

       public String getProductType(){
           return productType;
        }

       public int getUnitsSold(){
           return unitsSold;
        }

       public double getUnitPrice(){
           return unitPrice;
        }

       public double getTotalSold(){
            return unitsSold * unitPrice;
        }

       //Mutoators for salesPerson
       public void setSalesPersonID(int salespersonID){
           this.salespersonID = salespersonID;
       }

       public void setSalesPersonName(String salespersonName) {
           this.salespersonName = salespersonName;
        }

       public void setProductType(String productType){
           this.productType = productType;
        }

       public void setUnitsSold(int unitsSold){
           this.unitsSold = this.unitsSold + unitsSold;
        }

       public void setUnitProce(double unitPrice){
           this.unitPrice = unitPrice;
        }

            public static void main(String[] args)
        {
            ArrayList<salesPerson> salesPeople = new ArrayList<salesPerson>();
            Scanner userInput = new Scanner(System.in);
            boolean newRecord = true;
            int salespersonID;
            String salespersonName;
            String productType;
            int unitsSold = 0;
            double unitPrice;

            do{
                System.out.println("Please enter the Salesperson Inoformation.");
                System.out.print("Salesperson ID: ");
                salespersonID = userInput.nextInt();

                System.out.print("Salesperson Name: ");
                salespersonName = userInput.next();
                System.out.print("Product Type: ");
                productType = userInput.next();
                System.out.print("Units Sold: ");
                unitsSold = userInput.nextInt();
                System.out.print("Unit Price: ");
                unitPrice = userInput.nextDouble();

                if(salesPeople.size() == 0) 
                {
                    salesPerson tmp = new salesPerson(salespersonID, salespersonName, productType, unitsSold, unitPrice);
                    salesPeople.add(tmp);
                }
                else
                {
                    for(int i=0; i < salesPeople.size(); i++) {
                        if(salesPeople.get(i).getSalesPersonID() == salespersonID)
                        {
                            salesPeople.get(i).setUnitsSold(unitsSold);
                        }
                        else
                        {
                            salesPerson tmp = new salesPerson(salespersonID, salespersonName, productType, unitsSold, unitPrice);
                            salesPeople.add(tmp);
                        }
                      //System.out.println(salesPeople.get(i).getSalesPersonName());
                    }
                }

                System.out.print("Would you like to enter more data?(y/n)");
                String askNew = userInput.next();
                newRecord = (askNew.toLowerCase().equals("y")) ? true : false;

            }while(newRecord == true);



            for(int i=0; i < salesPeople.size(); i++) {
                System.out.println(salesPeople.get(i).getSalesPersonName() + ": "+salesPeople.get(i).getUnitsSold());
            }

        }

     }
import java.util.*;
公开课销售员{
//销售人员字段
私人int销售员ONID;
私有字符串salersonname;
私有字符串productType;
私有int UNITSOLD=0;
私人双单价;
//构造函数方法
公共销售人员(int-salersonid、String-salersonname、String-productType、int-unitsSold、double-unitPrice)
{
this.salersonid=salersonid;
this.salersonname=salersonname;
this.productType=productType;
this.unitsSold=unitsSold;
这个。单价=单价;
}
//销售人员访问器
public int getsalesersonid(){
返回销售人员ID;
}
公共字符串getSalesorsonName(){
返回销售人员姓名;
}
公共字符串getProductType(){
返回产品类型;
}
public int getUnitsSold(){
返回单元SOLD;
}
公共双getUnitPrice(){
退货单价;
}
公共双getTotalSold(){
返回单位sold*单位价格;
}
//销售人员的经纪人
public void setSalesPersonID(int salersonId){
this.salersonid=salersonid;
}
public void setSalesPersonName(字符串salersonName){
this.salersonname=salersonname;
}
公共void setProductType(字符串productType){
this.productType=productType;
}
公共void setUnitsSold(int unitsSold){
this.unitsSold=this.unitsSold+unitsSold;
}
公共作废setUnitProce(双倍单价){
这个。单价=单价;
}
公共静态void main(字符串[]args)
{
ArrayList Salesopers=新的ArrayList();
扫描仪用户输入=新扫描仪(System.in);
布尔newRecord=true;
国际销售员协会;
字符串salersonname;
字符串类型;
int unitsSold=0;
双倍单价;
做{
System.out.println(“请输入销售人员信息”);
系统输出打印(“销售人员ID:”);
salersonid=userInput.nextInt();
系统输出打印(“销售人员姓名:”);
salersonname=userInput.next();
系统输出打印(“产品类型:”);
productType=userInput.next();
系统输出打印(“售出单位:”);
unitsSold=userInput.nextInt();
系统输出打印(“单价:”);
unitPrice=userInput.nextDouble();
if(salesPeople.size()==0)
{
salesPerson tmp=新销售人员(salespersonID、salespersonName、productType、unitsSold、unitPrice);
销售人员添加(tmp);
}
其他的
{
for(int i=0;i
此方法可能是错误的:

   public void setUnitsSold(int unitsSold){
       this.unitsSold = this.unitsSold + unitsSold;
    }
替换为:

   public void setUnitsSold(int unitsSold){
       this.unitsSold = unitsSold;
    }
main()方法也有一个问题:for为每个元素创建一个新的SalesPerson实例,该元素的id与您在输入中收到的id不同


这与您的问题无关,但您应该始终(我的意思是始终)以大写字母开头Java类的名称。

获取更多关于输入内容和输出内容的信息将非常有用。考虑到我的2,在Java中,惯例是用大写字母命名类,因此
SalesPerson
是一个更好的名称。其次,您可能希望将您的
销售人员
组织在一个地图中,其中ID是一个键,值是
销售人员
对象(以便更快地查找)。