Q&A
ShopMainクラスで実行されるshop.addItemの内容をShopクラスのArrayListに登録して表示させるメソッドを実装したい。
4つの商品情報を並べて表示したい。
↓の状況だとshop.addItemで最後のメソッドのみ拾われてしまう。
Java
1public class ShopMain { 2 public static void main(String[] args) { 3 Shop shop = new Shop(); 4 5 shop.addItem(new Video("V0001","ローマの休日 ",2980,6,"ウィリアム・ワイラー")); 6 shop.addItem(new Video("V0002","風と共に去りぬ",2980,5,"ヴィクター・フレミング")); 7 shop.addItem(new CD( "C0001","ビートルズ全集",3000,1,"ビートルズ")); 8 shop.addItem(new CD( "C0002","スリラー ",2500,9,"マイケル・ジャクソン")); 9 10 System.out.println("CODE\tタイトル\t価格\t在庫\t監督/アーティスト"); 11 System.out.println("--------------------------------------------------------------"); 12 shop.showItem(); 13 System.out.println("--------------------------------------------------------------"); 14 System.out.println(); 15 shop.sellItem("V0001"); 16 shop.sellItem("C0002"); 17 System.out.println(); 18 System.out.println("CODE\tタイトル\t価格\t在庫\t監督/アーティスト"); 19 System.out.println("--------------------------------------------------------------"); 20 shop.showItem(); 21 System.out.println("--------------------------------------------------------------"); 22 } 23}
Java
1public class Shop { 2 3 private ArrayList<String> items; //商品情報を格納するリスト 4 Item cd = new CD(null, null, 0, 0, null); 5 Item video = new Video(null, null, 0, 0, null); 6 7 /** 8 * @param items 9 * コンストラクタ 10 */ 11 public Shop() { 12 ArrayList<String> items = new ArrayList<>(); 13 this.items = items; 14 } 15 16 //商品情報をitemsに登録する 17 public void addItem(Item item) { 18 items.add(item.getItemID()); 19 items.add(item.getItemName()); 20 items.add(String.valueOf(item.getPrice())); 21 items.add(String.valueOf(item.getStock())); 22 items.add(cd.getArtist()); 23 items.add(video.getMovieDirector()); 24 25 System.out.println("アイテムサイズ "+items.size()); 26 } 27 28 //itemsに登録されている商品情報を全て画面に表示する 29 public void showItem() { 30 cd.printItemDetail(); 31 video.printItemDetail(); 32 System.out.println(items); 33 } 34 35 //itemsに登録されている商品情報から該当する商品を検索しメッセージを表示する 36 public void sellItem(String itemID) { 37// System.out.println(items.get(1) + "を" + items.get(2) + "で販売しました"); 38// Item.decrementStock(); 39 } 40 41 42} 43 44class Item { 45 private static String itemID; //商品ID 46 47 private static String itemName; //商品名 48 49 private static int price; //値段 50 51 private static int stock; //在庫数 52 53 //デフォルトコンストラクタ 54 public Item() {} 55 56 public String getMovieDirector() { 57 return null; 58 } 59 60 public String getArtist() { 61 return null; 62 } 63 64 //コンストラクタ 65 public Item(String itemID, String itemName, int price, int stock) { 66 Item.itemID = itemID; 67 Item.itemName = itemName; 68 Item.price = price; 69 Item.stock = stock; 70 } 71 72 //商品ID、商品名、値段、在庫数を表示するメソッド 73 public void printItemDetail() { 74 System.out.println(itemID + "\t"+ itemName + "\t" + price + "円\t" + stock + "個"); 75 } 76 77 /** 78 * @return itemID 79 * 商品ID を返却するメソッド 80 */ 81 public String getItemID() { 82 return itemID; 83 } 84 85 /** 86 * @return itemName 87 * 商品名を返却するメソッド 88 */ 89 public String getItemName() { 90 return itemName; 91 } 92 /** 93 * @return price 94 * 値段を返却するメソッド 95 */ 96 public int getPrice() { 97 return price; 98 } 99 100 public int getStock() { 101 return stock; 102 } 103 104 //在庫数から1個販売するメソッド 105 public static void decrementStock() { 106 stock -= 1; 107 } 108 109 110} 111 112class CD extends Item { 113 private static String artist; //アーティスト名 114 115 /** 116 * @param itemID 117 * @param itemName 118 * @param price 119 * @param stock 120 * コンストラクタ 121 */ 122 public CD(String itemID, String itemName, int price, int stock, String artist) { 123 super(itemID, itemName, price, stock); 124 CD.artist = artist; 125 } 126 127 public String getArtist() { 128 return artist; 129 } 130 131 //商品ID、商品名、値段、在庫数、アーティスト名を表示するメソッド 132 @Override 133 public void printItemDetail() { 134 System.out.println(super.getItemID() + "\t" + super.getItemName() + "\t" + super.getPrice() + "円\t" + super.getStock() + "個\t" + getArtist()); 135 } 136 137} 138 139class Video extends Item { 140 private static String movieDirector; //監督名 141 142 /** 143 * @param movieDirector 144 * コンストラクタ 145 */ 146 public Video(String itemID, String itemName, int price, int stock, String movieDirector) { 147 super(itemID, itemName, price, stock); 148 Video.movieDirector = movieDirector; 149 } 150 151 public String getMovieDirector() { 152 return movieDirector; 153 } 154 155 //。商品ID、商品名、値段、在庫数、監督名を表示するメソッド 156 @Override 157 public void printItemDetail() { 158 System.out.println(super.getItemID() + "\t" + super.getItemName() + "\t" + super.getPrice() + "円\t" + super.getStock() + "個\t" + getMovieDirector()); 159 } 160
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2022/01/31 08:42
2022/01/31 11:33