这是我的课程对新项目的责备,从一开始它就是一场彻头彻尾的噩梦,我似乎无法解决我面临的问题:
Item中的setStock(float)不能应用于()
项目条目:
private void writeItemRecord()
{
// Check to see if we can connect to database table
if ( DataBaseHandler.makeConnectionToitemDB() == -1)
{
JOptionPane.showMessageDialog (frame, "Unable to connect to database table (Item)");
}
else // Ok, so first read data from the text fields
{
// Read data from form and store data
String Itemname = ItemnameTxtField.getText();
String Itemcode = ItemcodeTxtField.getText();
String Description = DescriptionTxtField.getText();
String Unitprice = UnitpriceTxtField.getText();
String Style = StyleTxtField.getText();
String Finish = FinishTxtField.getText();
String Stock = StockTxtField.getText();
// Convert priceStr to a float
Float fvar = Float.valueOf(Unitprice);
float price = fvar.floatValue();
Float svar = Float.valueOf(Stock);
float stock = svar.floatValue();
// Create a Item oject
Item Item = new Item();
// Set the attributes for the Item object
Item.setItemname (Itemname);
Item.setItemcode (Itemcode);
Item.setDescription (Description);
Item.setUnitprice (price);
Item.setStock(stock);
Item.setStyle(Style);
Item.setFinish(Finish);
// Write Item record. Method writeToItemTable() returns
// 0 of OK writing record, -1 if there is a problem. I store
// the returned value in a variable called error.
int error = DataBaseHandler.writeToItemTable(Item.getItemname(),
Item.getItemcode(),
Item.getDescription(),
Item.getUnitprice(),
Item.setStock(),
Item.setStyle(Style),
Item.setFinish(Finish),
Item.setSuppliercode(Suppliercode),
Item.setSuppliername(Suppliername),
Item.setAddress(Address)
);
// Check if there is a problem writing the record, in
// which case error will contain -1
if (error == -1)
{
JOptionPane.showMessageDialog (frame, "Problem writing record to Item Table");
}
// Clear the form - actual method is coded below
clearForm();
// Close database connection. Report an error message
// if there is a problem.
if ( DataBaseHandler.closeConnection() == -1 )
{
JOptionPane.showMessageDialog (frame, "Problem closing data base conection");
}
}
} // End
非常感谢任何帮助!
项目摘录:
public void setStock(float StockIn)
{
Stock = StockIn;
}
public float getStock()
{
return Stock;
}
答案 0 :(得分:5)
对于初学者,请遵守Java命名约定。除了类/接口名称之外,不允许使用CamelCase。使用lowerCamelCase。至于你的“问题”,你写了
Item.setStock(),
显然,它给你的错误。它还会为您提供错误的确切行号,这显然可以帮助我们诊断您的问题。
解决方案:使用Item.getStock()(我想,这很难说)。在那个位置调用Item.setStock(作为方法调用的参数)无论如何都是没有意义的,因为setStock是一个void方法。
答案 1 :(得分:3)
Java编译器错误带有行号 - 请注意它。这是你的问题:
Item.setStock()
setStock()
需要一个参数,您试图在没有参数的情况下调用它。也许你的意思是getStock()
?我怀疑将参数列表中的方法设置为writeToItemTable
的所有调用也是错误的,因为这些set方法将void
作为返回值,因此您不能以这种方式使用它们。 / p>
答案 2 :(得分:1)
setStock
方法如下所示:
public void setStock(float StockIn)
要调用它,您需要传递一个float作为参数。在代码的某处,您可以调用方法,如下所示:
Item.setStock(),
该方法需要使用float参数调用,而是使用none调用它,因此您会看到编译错误。
答案 3 :(得分:1)
在此代码中:
int error = DataBaseHandler.writeToItemTable(Item.getItemname(),
Item.getItemcode(),
Item.getDescription(),
Item.getUnitprice(),
// Right here --> Item.setStock(),
Item.setStyle(Style),
Item.setFinish(Finish),
Item.setSuppliercode(Suppliercode),
Item.setSuppliername(Suppliername),
Item.setAddress(Address)
);
请注意,您正在呼叫Item.setStock()
,Item.setStyle(Style)
等,而不是Item.getStock()
,Item.getStyle()
等。这可能是您问题的根源 - 您'尝试不带参数调用setStock()
方法,因此出错。
希望这有帮助!
答案 4 :(得分:1)
这一行
// Create a Item oject
Item Item = new Item();
有问题。使用变量的大写名称不仅是Java中的错误样式,这个特定的实例会导致编译错误。此外,您在没有参数的情况下调用setStock
。你也需要解决这个问题。
答案 5 :(得分:1)
这是您的错误:
int error = DataBaseHandler.writeToItemTable(Item.getItemname(),
Item.getItemcode(),
Item.getDescription(),
Item.getUnitprice(),
Item.setStock(), // <<< here! should be getStock()
Item.setStyle(Style),
Item.setFinish(Finish),
Item.setSuppliercode(Suppliercode),
Item.setSuppliername(Suppliername),
Item.setAddress(Address));
但是再次......考虑命名/编码惯例。