2

我正在尝试创建一个小型库存控制程序,其中每个 StockItem 有 5 个实例变量、一个 itemID、一个 itemDesc、一个价格、一个数量和一个 reOrderLevel。我已经在 StockItem 文件中设置了我的构造函数,并且在尝试创建一个测试器文件来测试我的所有方法时,我遇到了一个问题。当我尝试使用构造函数创建新的 StockItem 时,出现错误:

必需:String,String,Double,int,int 找到: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");      
}    

}
4

6 回答 6

4

您必须根据构造函数签名传递类型:

StockItem item1 = new StockItem ("ABC", "iPhone 5",  500.0,  3,  10 );
                                 ^^^^^  ^^^^^^^^^^   ^^^^^   ^^^ ^^^
                                String    String     Double  int int
                                itemId   itemDesc    price   qty reorderlevel
于 2013-04-04T13:28:19.853 回答
4

String当您的构造函数需要不同的数据类型(如ints 和s)时,您将传入doubles。

您需要更改构造函数,以便传入正确的数据类型:

new StockItem ("ABC", "iPhone 5", 500.0, 3, 10); // String, String, double, int, int
于 2013-04-04T13:28:44.007 回答
2

你需要这样做:

StockItem item1 = new StockItem ("ABC", "iPhone 5", 500, 3, 10);     

函数调用中引号中的任何值都被视为字符串。

于 2013-04-04T13:29:02.840 回答
2

最后两个参数必须是 type int,而在此之前的一个参数必须是double根据您的类中的实例声明。

StockItem item1 = new StockItem ("ABC", "iPhone 5", 500, 3, 10);

于 2013-04-04T13:29:03.387 回答
2

是的,您将 5 个字符串传递给需要 2 个字符串和 3 个数字的方法。

更改您的方法调用:

StockItem item1 = new StockItem ("ABC", "iPhone 5", " 500", "3", "10"); 

至:

StockItem item1 = new StockItem ("ABC", "iPhone 5", 500, 3, 10); 
于 2013-04-04T13:29:15.013 回答
1

您不应该在数字参数周围加上引号,即 500、3 和 10。引号意味着它们被视为String与 adouble和两个ints 相对。

于 2013-04-04T13:29:16.707 回答