新しいオブジェクトを ArrayList に追加しようとしています。各 Item オブジェクトには 3 つの属性があります。
- アイテム番号
- 情報
- 料金
私も3つのクラスを持っています:
- アイテム クラスは、カタログに格納される単一のアイテムを定義します。
- Catalog クラスは、Item オブジェクトのリストを維持します。
- メインメソッドを備えたクライアントクラス。
Item クラスにセットと取得があり、Catalog に ArrayList があります。クライアントでは、オブジェクトを追加、削除、または編集するオプションがあります。新しい Item オブジェクトを ArrayList に正しく追加するにはどうすればよいですか?
Item クラスは正常にコンパイルされますが、Catalog クラスと Client クラスはコンパイルされません。Catalog クラスで発生するエラーは次のとおりです。
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)
以下はItemクラスのコードです
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
以下はクライアントクラスです。itemNum、情報、およびコストに関するユーザーからの入力を受け取ります。
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
}
どんな助けでも大歓迎です。