2013-10-03 158 views
1

我想添加一个新的对象到ArrayList。每个项目的对象将有3个属性:如何将新对象添加到ArrayList?

  1. itemNum
  2. 资讯
  3. 成本

我也有3类:

  1. 项目类定义存储在单个项目目录。
  2. 目录类维护着Item对象的列表。
  3. 客户类别w/main方法。

我有集合并获取在Item类中,我在Catalog中有ArrayList。在客户端中,我可以选择添加,删除或编辑对象。如何正确添加一个新的Item对象到ArrayList?

我得到Item类编译好,但目录和客户端类不编译。这是我与目录类得到的错误:

Catalog.java:35: error: no suitable method found for add(int,String,double)listOfObjects.add(newItemId, newDescription, newCost); 
method ArrayList.add(int,Item) is not applicable 
(actual and formal argument lists differ in length) 
method ArrayList.add(Item) is not applicable 
(actual and formal argument lists differ in length) 

下面是项目类

Public class Item 
{ 
    private int itemNum; 
    private String info; 
    private double cost; 

    public Item() 
    { //start constructor 
    itemNum = 0; //default values 
    info = "x"; 
    cost = 0; 
    } //end constructor 

    public CatalogItem(int newItemNum, String newInfo, double newCost) 
    { //start overload constructor 
    this.itemNum = newItemNum; 
    this.info = newInfo; 
    this.cost = newCost; 
    } //end overload constructor 
下面

是一组代码itemNum

/获取
 public int getItemNum() 
    { //start itemNum accessor 
    return itemNum; 
    } //end getItemNum 

    public void setItemNum(int newItemNum) 
    { //start itemNum mutator 
    this.itemNum = newItemNum; 
    } //end setItemNum 
} //end Item class 

//下面是我的产品目录类

import java.util.*; 

    public class Catalog 
    { //start class 
     private ArrayList<CatalogItem> listOfObjects = new ArrayList<CatalogItem>(100); //creates ArrayList 
    Item newItem = new Item(newItemNum, newInfo, newCost); //instantiates Item class 

    /* 
    public Catalog() 
    { //start constructor 

    } //end constructor  
    */ 

public void add(CatalogItem newItem) //method adds a new Item object to the array list 
    { //start add 
    listOfObjects.add(newItem); 

    } //end add 

    public void add(int itemNum, String info, double cost) //accepts parameters from main method to add to new object 
    { //start add 
    int newItemNum = itemNum; 
    String newInfo = info; 
    double newCost = cost; 

    newItem.setItemNum(newItemNum); 
    newItem.setInfo(newInfo); 
    newItem.setCost(newCost); 

    listOfObjects.add(newItemNum, newInfo, newCost); 

    } //end add 
}  //end class 

belo w是客户端类。它接收来自用户关于itemNum,info和成本的输入

import java.util.*; //allows use of Scanner class 

public class Client 
{ //start client class 

    public static void main(String[] args) 
    { //start main 
    Catalog serv = new Catalog(); //creates instance of Catalog class 
    Scanner scan = new Scanner(System.in); //creates instance of Scanner class called scan 

    public void add(int itemNum, String info, double cost) //accepts parameters from main method to add to new object 
    { //start add 
    int newItemNum = itemNum; 
    String newInfo = info; 
    double newCost = cost; 

    newItem.setItemNum(newItemNum); 
    newItem.setInfo(newInfo); 
    newItem.setCost(newCost); 

    listOfObjects.add(newItemNum, newInfo, newCost); //adds the object to the ArrayList 

    } //end add 
} 

任何帮助将不胜感激。

+0

您正在使用的构造'新项目(newItemNum,newInfo,newCost)创建项目;'但是我可以”没有看到它。 – omainegra

回答

5

你有一些错误...

在你的类目录,这条线是不正确的:

listOfObjects.add(newItemNum, newInfo, newCost); //adds the object to the ArrayList 

你必须做到:

CatalogItem cat = new CatalogItem(newItemNum, newInfo, newCost); 
listOfObjects.add(cat); //adds the object to the ArrayList 

而在你的类客户端,你没有引用newItem和listOfObjects,所以你不能在那个类中使用它们。如果你想从你的客户的主要方法添加元素listOfObjects,你可以做这样的事情:

public class Client { 
    public static void main(String[] args) { //start main 
     Catalog serv = new Catalog(); 
     ...... 
     serv.add(1, "", 1.0d); 
    } 
} 
+0

太棒了!这很有帮助,我得到了它的工作。 –