2012-05-15 59 views
-3

这是我班承担一切新项目条目,并从一开始就已经彻底的噩梦,我似乎无法来解决我所面临的问题分别是:梦魇类 - 花车/串

setStock (浮动)项不能被应用到()

项条目:

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; 
    } 
+2

奇怪的代码。 'Item Item = new Item();'让我困惑。它应该是'item item = new Item();'(带小写的“i”)。在“Item”类中相同。不要使用大写第一个字母作为变量。 –

+0

我已经对大写字母进行了更改,谢谢。 – silverj2k7

+0

提供确切的错误消息。 –

回答

1

setStock方法是这样的:

public void setStock(float StockIn) 

调用它,你需要传递一个浮点作为参数。某处在你的代码,你调用该方法,像这样:

Item.setStock(), 

的方法需要与浮动参数来调用,而是它被称为有没有,因此你看到一个编译错误。

+0

所以它应该是: Item.setStock(float StockIn)? – silverj2k7

+0

不,你打电话错误的方法,你的意思是调用'Item.getStock()'。我还建议您重新阅读Java中声明和调用方法的工作原理。 – fivedigit

+0

我想我只是需要睡眠,花了最后8个半小时做这个=/ – silverj2k7

3

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

Item.setStock() 

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

+0

我将如何修复这些设置方法? – silverj2k7

+0

@writeToItemTable:他们没有问题,他们是如何使用它们的。首先,您正在使用一些未定义的变量(供应商代码,供应商名称,地址),writeToItemTable应该有一个参数Item对象,而不是在设置它们之后提取其字段。 –

+0

我明白,谢谢。我现在已经设置了代码,名称和地址。我不再收到相同的错误消息。相反,我真的很关心数据库处理程序。 – silverj2k7

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()方法,因此错误。

希望这会有所帮助!

1

此行

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

是有问题的。不仅在Java中使用大写名称作为变量的风格很糟糕,这个特定的实例会导致编译错误。另外,您不需要参数即可拨打setStock。你也需要解决这个问题。

+0

我很抱歉,我是一个完整的新手 – silverj2k7

5

对于初学者,坚持Java命名约定。除了类/接口名称之外,其他都不允许使用CamelCase。使用lowerCamelCase。至于你的“问题”,你写了

Item.setStock(), 

很明显这是给你的错误。它也会给你错误的确切行号,这显然会帮助我们诊断你的问题。

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

+0

+1的命名约定。特别是看浮动股票与字符串股票与浮动股票。你还应该注意到'Item Item = new Item()'会引起麻烦。 – thagorn

+0

@thagorn是吗?我正要启动Eclipse,看看Java有什么奇怪的东西:) –

+0

其实这是一个很好的问题。我不知道是否要用Item变量覆盖Item类的本地名称(我知道有些语言会这样做),或者如果您只是在每个实例中调用Item类而不是Item变量在这之后。无论哪种方式,不良行为和不良做法。 – thagorn

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)); 

但再次...考虑命名/编码约定。

+0

我已将所有.set更改为.get,但仍然出现错误! – silverj2k7