Итак, у меня есть класс Prodcut
, который принимает String, String, int, Double (ID, имя, количество, стоимость).
У меня также есть класс Store
, где я храню все свои методы и вызвать их из меню консоли. Например, вот мой метод addProduct
, который позже выдает мне ошибку:
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;
}
В моем меню у меня есть метод, который заполняет переменные, поэтому я смогу использовать их в menu:
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();
int quantity = Integer.parseInt(productToPopulate.get(2));
Double cost = Double.parseDouble(productToPopulate.get(3));
st.newProdcut(productToPopulate.get(0), productToPopulate.get(1), quantity, cost);
} catch (Exception e) {
e.printStackTrace();
}
break;
Когда я запускаю программу и пытаюсь добавить продукт, я получаю эту ошибку: java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.String (java.lang.Integer and java.lang.String are in module java.base of loader 'bootstrap')
Итак, я гуглил его и обнаружил, что должен привести его к строке, но я не могу, потому что метод принимает str str int double, а не 4 str.
Какова моя альтернатива здесь?
Полная ошибка:
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.String (java.lang.Integer and java.lang.String are in module java.base of loader 'bootstrap')
at Menu.employeeSubMenu(Menu.java:119)
at Menu.mainMenu(Menu.java:60)
at Menu.main(Menu.java:25)