调用构造函数时数据类型不正确

时间:2013-04-04 13:27:01

标签: java

我正在尝试创建一个小型库存控制程序,其中每个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");      
}    

}

6 个答案:

答案 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)

当您的构造函数需要不同的数据类型,例如Stringint时,您正在传递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} }第