Ich habe andere Antworten zu diesem Thema untersucht und habe nichts gefunden, um zu helfen. Hier sind die Klassen I haben:Nicht-statische Methode kann nicht aus statischen Kontext referenziert werden, aber nichts ist statisch
import java.util.ArrayList;
/**
* Manage the stock in a business.
* The stock is described by zero or more Products.
*
* @author
* @version
*/
public class StockManager
{
// A list of the products.
private ArrayList<Product> stock;
/**
* Initialise the stock manager.
*/
public StockManager()
{
stock = new ArrayList<Product>();
}
/**
* Add a product to the list.
* @param item The item to be added.
*/
public void addProduct(Product item)
{
for(Product product: stock)
{
if(Product.getID() == item)
{
System.out.println("Please add an item with a different id");
}
else
{
stock.add(item);
}
}
}
/**
* Receive a delivery of a particular product.
* Increase the quantity of the product by the given amount.
* @param id The ID of the product.
* @param amount The amount to increase the quantity by.
*/
public void delivery(int id, int amount)
{
for(Product product : stock)
{
if(findProduct(id) != null)
{
increaseQuantity(amount);
}
}
}
/**
* Try to find a product in the stock with the given id.
* @return The identified product, or null if there is none
* with a matching ID.
*/
public Product findProduct(int id)
{
for(Product product : stock)
{
if(id == getID())
{
return getName();
}
else
{
return null;
}
}
}
/**
* Locate a product with the given ID, and return how
* many of this item are in stock. If the ID does not
* match any product, return zero.
* @param id The ID of the product.
* @return The quantity of the given product in stock.
*/
public int numberInStock(int id)
{
for(Product product : stock)
{
if(id == getID())
{
getQuantity();
}
else
{
return 0;
}
}
}
/**
* Print details of all the products.
*/
public void printProductDetails()
{
for(Product product: stock)
{
toString();
}
}
/**
* This method prints the deatils
* of products under a certain quantity
* @param the amount you want to check under
*/
public void lowStockCheck(int amount)
{
for(Product product : stock)
{
if(getQuantity() < amount)
{
printProductDetails();
}
}
}
/**
* Find a product via it's name
* rather than ID
* @param Name of product
*/
public Product findProductName(String name)
{
for(Product product : stock)
{
if(name.equals(getName()))
{
return getName();
}
else
{
return null;
}
}
}
Und hier ist die Produktklasse:
/**
* Model some details of a product sold by a company.
*
* @author David J. Barnes and Michael Kölling.
* @version 2011.07.31
*/
public class Product
{
// An identifying number for this product.
private int id;
// The name of this product.
private String name;
// The quantity of this product in stock.
private int quantity;
/**
* Constructor for objects of class Product.
* The initial stock quantity is zero.
* @param id The product's identifying number.
* @param name The product's name.
*/
public Product(int id, String name)
{
this.id = id;
this.name = name;
quantity = 0;
}
/**
* @return The product's id.
*/
public int getID()
{
return id;
}
/**
* @return The product's name.
*/
public String getName()
{
return name;
}
/**
* @return The quantity in stock.
*/
public int getQuantity()
{
return quantity;
}
/**
* @return The id, name and quantity in stock.
*/
public String toString()
{
return id + ": " +
name +
" stock level: " + quantity;
}
/**
* Restock with the given amount of this product.
* The current quantity is incremented by the given amount.
* @param amount The number of new items added to the stock.
* This must be greater than zero.
*/
public void increaseQuantity(int amount)
{
if(amount > 0) {
quantity += amount;
}
else {
System.out.println("Attempt to restock " +
name +
" with a non-positive amount: " +
amount);
}
}
/**
* Sell one of these products.
* An error is reported if there appears to be no stock.
*/
public void sellOne()
{
if(quantity > 0) {
quantity--;
}
else {
System.out.println(
"Attempt to sell an out of stock item: " + name);
}
}
Der Fehler, den ich erhalten, ist in der addProduct Funktion in der Klasse Bestandsverwalter. Dieses Stück Code speziell
/**
* Add a product to the list.
* @param item The item to be added.
*/
public void addProduct(Product item)
{
for(Product product: stock)
{
if(Product.getID() == item)
{
System.out.println("Please add an item with a different id");
}
else
{
stock.add(item);
}
}
}
Der Fehler sagt „nicht-statische Methode getID() kann nicht von einem statischen Kontext verwiesen werden“ Keine dieser Methoden statisch ist, da zu diesem Zeitpunkt die wir für sie keine Notwendigkeit, . Was fehlt mir hier?
Meinten Sie 'product.getID()', mit einem _lowercase_ 'p'? – rgettman
Willkommen bei Stack Overflow. Bitte versuche immer, dein Problem auf ein [mcve] zu reduzieren - du hast über 250 Codezeilen hier eingefügt, für etwas, das in etwa 15 hätte gezeigt werden können. –
Oh mein Gott .. Ich habe versucht, dies zu beheben wie jetzt drei Tage. Ich danke dir sehr! – Blaza