I've got to make a simple application that orders based on storage in a warehouse but I've run into this NullPointerException in the Warehouse and main classes and cant seem to figure out what the problem is. This is the code:
package com.forward.forward;
import java.util.HashMap;
public class Warehouse
{
public HashMap<String, ProductQuantity> storageMap = new HashMap<>();
public Warehouse() {
}
public void addProductQuantity(String description, ProductQuantity
quantity)
{
if(description != quantity.getProduct().getDescription())
{
throw new IllegalArgumentException("<devMessage>Please make sure
that description and Product description match" +
"when creating objects!");
}
storageMap.put(description, quantity);
}
public int getProductQuantity(String description)
{
if(!storageMap.containsKey(description))
{
System.out.println("Product is not present in warehouse!");
}
return storageMap.get(description).getQuantity();
}
@Override
public String toString() {
return "Warehouse{" +
"storageMap=" + storageMap +
'}';
}
}
This is the main class:
package com.forward.forward;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ForwardApplication {
public static void main(String[] args)
{
Product product1 = new Product("Fender Jazz Bass", "Bass", "Relative", "None", 400, 2016);
Product product2 = new Product("Fender Jaguar", "Guitar", "Relative", "None", 300, 2020);
Product product3 = new Product("Fender Mustang", "Guitar", "Relative", "None", 200, 2018);
Product product4 = new Product("Jackson Rhodes V", "Guitar", "Relative", "None", 1000, 1998);
Product product5 = new Product("Vox VT20+", "Amplifiers", "Relative", "None", 250, 2015);
ProductQuantity product1Quantity = new ProductQuantity(product1, 2);
ProductQuantity product2Quantity = new ProductQuantity(product2, 4);
ProductQuantity product3Quantity = new ProductQuantity(product3, 3);
ProductQuantity product4Quantity = new ProductQuantity(product4, 0);
ProductQuantity product5Quantity = new ProductQuantity(product5, 10);
Warehouse stock = new Warehouse();
stock.addProductQuantity("Fender Jazz Bass", product1Quantity);
stock.addProductQuantity("Fender Jaguar", product2Quantity);
stock.addProductQuantity("Fender Mustang", product3Quantity);
stock.addProductQuantity("Jackson Rhodes V", product4Quantity);
stock.addProductQuantity("Vox VT20+", product5Quantity);
System.out.println("Search for product availability: ");
Scanner in = new Scanner(System.in);
String description = in.next();
ArrayList<Warehouse> productsList = new ArrayList<>();
productsList.add(stock);
for (Warehouse w:
productsList) {
if (w.getProductQuantity(description) == 0)
{
System.out.println("Product unavailable!");
}
else
{
System.out.println("Available!");
}
}
//System.out.println(productsList); //made for testing
}
}
The error message when i run the application is as follows:
Search for product availability:
Jackson Rhodes V
Product is not present in warehouse!
Exception in thread "main" java.lang.NullPointerException
at com.forward.forward.Warehouse.getProductQuantity(Warehouse.java:29)
at
com.forward.forward.ForwardApplication.main(ForwardApplication.java:44)
Process finished with exit code 1