我正在尝试创建一个小型库存控制程序,其中每个StockItem有5个实例变量,itemID,itemDesc,价格,数量和reOrderLevel。我已经在StockItem文件中设置了我的构造函数,在尝试创建测试文件来测试我的所有方法时,我遇到了一个问题。当我尝试使用我的构造函数创建一个新的StockItem时,我得到错误:
必需:String,String,Double,int,int found:String,String,String,String,String
我该如何解决此错误?我不确定我的构造函数中是否有错误,或者我的测试文件中的代码是错误的。
提前致谢。
这是我的构造函数代码:
public class StockItem {
String itemID;
String itemDesc;
Double price;
int quantity;
int reOrderLevel;
//declaring my instance variables
public StockItem (String itemID, String itemDesc, Double price, int quantity, int reOrderLevel) {
this.itemID = itemID;
this.itemDesc = itemDesc;
this.price = price;
this.quantity = quantity;
this.reOrderLevel = reOrderLevel;
}
这是我到目前为止的测试人员代码,试图创建一个项目:
public class StockItemTester {
public static void main (String[] args) {
StockItem item1 = new StockItem ("ABC", "iPhone 5", " 500", "3", "10");
}
}
答案 0 :(得分:4)
您必须根据构造函数签名传递类型:
StockItem item1 = new StockItem ("ABC", "iPhone 5", 500.0, 3, 10 );
^^^^^ ^^^^^^^^^^ ^^^^^ ^^^ ^^^
String String Double int int
itemId itemDesc price qty reorderlevel
答案 1 :(得分:4)
当您的构造函数需要不同的数据类型,例如String
和int
时,您正在传递double
。
您需要更改构造函数,以便传入正确的数据类型:
new StockItem ("ABC", "iPhone 5", 500.0, 3, 10); // String, String, double, int, int
答案 2 :(得分:2)
你需要这样做:
StockItem item1 = new StockItem ("ABC", "iPhone 5", 500, 3, 10);
函数调用中的引号中的任何值都被视为字符串。
答案 3 :(得分:2)
根据类中的实例声明,最后两个参数必须是int
类型,而前一个参数必须是double
。
StockItem item1 = new StockItem ("ABC", "iPhone 5", 500, 3, 10);
答案 4 :(得分:2)
是的,你将5个字符串传递给需要2个字符串和3个数字的方法。
从以下方式更改您的方法调用:
StockItem item1 = new StockItem ("ABC", "iPhone 5", " 500", "3", "10");
为:
StockItem item1 = new StockItem ("ABC", "iPhone 5", 500, 3, 10);
答案 5 :(得分:1)
您不应该在数字参数周围加上引号,即500,3和10.引号表示它们被视为String
而不是double
和两个{{1} }第