-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 の命名規則に従ってください。クラス/インターフェース名以外はキャメルケースを使用できません。より低いキャメルケースを使用してください。あなたの「問題」については、あなたは書いた

Item.setStock(),

だから明らかにそれはあなたにエラーを与えています。また、エラーの正確な行番号も表示されます。これは、問題を診断するのに明らかに役立ちます。

解決策: Item.getStock() を使用します (わかりにくいと思います)。setStock が void メソッドであることを考えると、その位置で (メソッド呼び出しの引数として) Item.setStock を呼び出しても意味がありません。

于 2012-05-15T19:09:14.533 に答える
3

Java コンパイラ エラーには行番号が付いています。注意してください。これはあなたの問題です:

Item.setStock()

setStock()パラメータが必要です。パラメータなしで呼び出そうとしています。おそらくあなたは意味しましたgetStock()か?また、パラメーター リスト内の set メソッドへのすべての呼び出しwriteToItemTableも間違っていると思われます。これらの set メソッドはvoid戻り値として使用されるため、そのように使用することはできません。

于 2012-05-15T19:08:45.267 に答える
1

メソッドは次のsetStockようになります。

public void setStock(float StockIn)

それを呼び出すには、float を引数として渡す必要があります。コードのどこかで、次のようにメソッドを呼び出します。

Item.setStock(),

このメソッドは float 引数を指定して呼び出す必要がありますが、代わりに何も指定せずに呼び出されるため、コンパイル エラーが発生します。

于 2012-05-15T19:08:21.647 に答える
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 に答える
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 に答える