-3

这是我负责新项目条目的班级,从一开始它就是一场彻头彻尾的噩梦,我似乎无法解决我面临的问题:

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;
  }  
4

6 回答 6

5

对于初学者,请遵守 Java 命名约定。除了类/接口名称外,其他任何东西都不允许使用 CamelCase。使用 lowerCamelCase。至于你的“问题”,你写道

Item.setStock(),

所以很明显它给了你错误。它还为您提供了错误的确切行号,这显然有助于我们诊断您的问题。

解决方案:使用 Item.getStock() (我想,这很难说)。无论如何,在该位置调用 Item.setStock(作为方法调用的参数)是没有意义的,因为 setStock 是一个 void 方法。

于 2012-05-15T19:09:14.533 回答
3

Java 编译器错误带有行号 - 请注意它。这是你的问题:

Item.setStock()

setStock()需要一个参数,您试图在没有参数的情况下调用它。也许你的意思是getStock()?而且我怀疑所有对参数列表中设置方法的调用writeToItemTable也是错误的,因为这些设置方法将具有void返回值,所以你不能那样使用它们。

于 2012-05-15T19:08:45.267 回答
1

setStock方法如下所示:

public void setStock(float StockIn)

要调用它,您需要传递一个浮点数作为参数。在您的代码中的某处,您调用该方法,如下所示:

Item.setStock(),

该方法需要使用 float 参数调用,而是使用 none 调用,因此您会看到编译错误。

于 2012-05-15T19:08:21.647 回答
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()不带参数调用该方法,因此出现错误。

希望这可以帮助!

于 2012-05-15T19:08:51.043 回答
1

这条线

// Create a Item oject
               Item Item = new Item();

是有问题的。在 Java 中为变量使用大写名称不仅是不好的风格,而且这个特定的实例会导致编译错误。此外,您在setStock没有参数的情况下调用。你也需要解决这个问题。

于 2012-05-15T19:08:54.747 回答
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));

但同样...考虑命名/编码约定。

于 2012-05-15T19:10:34.303 回答