public class Inventory { private Item[] items; public Inventory(Item[] items) { super(); this.items = items; } public void updateQuality() { for (int i = 0; i < items.length; i++) { String itemName = items[i].getName().toUpperCase(); String[] nameArr = itemName.replaceAll("[^A-Z0-9\\s]", "").split(" "); String output = (nameArr[0].equals("5")) ? "FIVE" : nameArr[0]; BigSellers.valueOf(output).quality(items[i]); } } //vvvvvvvvvvvvvvvvvvvvvvvvvvvvvBIG OL ENUMvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv public enum BigSellers { //------------------------------SULFURAS--------------------------------------- SULFURAS() { @Override public void quality(Item x) { return; } }, //---------------------------------------------------------------------------- //----------------------------AGED BRIE--------------------------------------- AGED() { @Override public void quality(Item x) { int currentQuality = x.getQuality(); int sellIn = x.getSellIn(); int adjustPrice = sellIn > 0 ? 1 : 2; //--------------------------------------- if (currentQuality < 50) { x.setQuality(currentQuality + adjustPrice); } //-------------------------------------- x.setSellIn(sellIn - 1); } }, //----------------------------------------------------------------------------- //-------------------------BACKSTAGE PASSES------------------------------------ BACKSTAGE() { @Override public void quality(Item x) { int currentQuality = x.getQuality(); int sellIn = x.getSellIn(); int adjustPrice = sellIn <= 5 ? 3 : sellIn <= 10 ? 2 : 1 ; //------------------------------------- if (sellIn >= 0) { if (currentQuality + adjustPrice >= 50) { x.setQuality(50); } else x.setQuality(currentQuality + adjustPrice); } else x.setQuality(0); //-------------------------------------- x.setSellIn(sellIn - 1); } }, //----------------------------------------------------------------------------- //-----------------------------+5 DEX------------------------------------------ FIVE() { @Override public void quality(Item x) { int currentQuality = x.getQuality(); int sellIn = x.getSellIn(); //------------------------------------------ if (currentQuality > 0) { if(sellIn >= 0) { x.setQuality(currentQuality - 1); } else x.setQuality(currentQuality - 2); } //------------------------------------------ x.setSellIn(sellIn - 1); } }; //----------------------------------------------------------------------------- public abstract void quality(Item x); //<--------template method } //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^END OF ENUM^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ }