Мне трудно найти свою проблему.
У меня есть класс с именем Prodcut:
class Product extends ObjectIDs implements Output {
private String prodName;
private int quantity;
private Double cost;
У него также есть переменная Id
, полученная из другого источника. учебный класс. Это тип String. Обычно каждый экземпляр Product выглядит примерно так: Product P = new Prodcut(String, String, int, double)
Продолжая, у меня есть класс Store
, в котором я все создаю. У меня есть метод с именем newProdcut
, который позволяет мне создавать новый Произведите и верните его:
Product newProdcut(String id, String prodName, Integer prodQuantity, Double prodCost) throws Exception {
Scanner sc = new Scanner(System.in);
for ( Product p : products ) {
if ( id.equals(p.id)) {
System.out.println("Product already exists, please enter the number of the quantity you want to add to the existing quantity:");
int inputQuantity = sc.nextInt();
prodQuantity += inputQuantity;
}
}
Product p = new Product(id, prodName, prodQuantity, prodCost);
this.products.add(p);
System.out.println("Prodcut "+p.createOutput()+" was added to the list");
return p;
}
Теперь у меня также есть консольное меню, которое вызывает эту функцию и заполняет ArrayList с возвратом:
private static ArrayList<String> menuAddProdcut() throws Exception { // 1. Add a prodcut
Random rand = new Random();
System.out.println("You're adding a new prodcut");
ArrayList newProductArray = new ArrayList<>();
int prodId = rand.nextInt(1000) + 100;
String prodIdStr = Integer.toString(prodId);
System.out.println("Enter product name:");
String prodName = sc.nextLine();
System.out.println("Enter quantity:");
Integer prodQuantity = sc.nextInt();
System.out.println("Enter product's price:");
Double price = sc.nextDouble();
newProductArray.add(prodIdStr); //str-converted ID
newProductArray.add(prodName);
newProductArray.add(prodQuantity);
newProductArray.add(price);
return newProductArray;
}
Затем я вызываю это Метод из меню:
case 1:
try {
ArrayList<String> productToPopulate = Menu.menuAddProdcut();
st.newProdcut(productToPopulate.get(0), productToPopulate.get(1), productToPopulate.get(2), productToPopulate.get(3));
} catch (Exception e) {
e.printStackTrace();
}
Я получаю следующее сообщение об ошибке:
The method newProdcut(String, String, Integer, Double) in the type Store is not applicable for the arguments (String, String, String, String)
Я не понимаю, почему он считает, что вход должен быть все строки, когда ясно, что в Prodcut написано String String int double.
Любая помощь будет отличной.