Java 正在更新ArrayList中的对象
我写了这段代码,一切似乎都是正确的,但不幸的是,它没有提供正确的单位出售。我试图找出销售人员ID是否存在,并更新该记录。有时它打印正确的信息,有时则不打印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
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是一个键,值是销售人员
对象(以便更快地查找)。