2012-05-15 34 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