private static String[][] menuList = {{"Soda","10"},{"Coke","20"},{"Water","5"}};
public Drinks(String menu, String size) {
setMenu(menu);
setSize(size);
}
public void setMenu(String menu) {
this.menu = menu;
for (int i = 0; i < menuList.length; i ) {
if (this.menu.equalsIgnoreCase(menuList[i][0])){
price = Double.valueOf(menuList[i][1]);
}else{price = 0.0;}
}
}
然后我創建用于測驗的物件
我無法獲得 menuList[][] 中前兩行的價格,但我仍然可以獲得最后一個
Drinks d = new Drinks("water","L");
Drinks e = new Drinks("coke","L");
Drinks f = new Drinks("soda","L");
System.out.println(d);
System.out.println(e);
System.out.println(f);
輸出是
Drink[menu = water , size = L , price = 5.00]
Drink[menu = coke , size = L , price = 0.00]
Drink[menu = soda , size = L , price = 0.00]
我只想知道為什么?我該如何解決這個問題?
uj5u.com熱心網友回復:
您實際上在做的是,對于 中的每個條目menuList,您檢查它的名稱是否與您的引數相對應,并每次都設定(即覆寫)價格欄位。它的作業原理與您沒有回圈但只檢查最后一個專案一樣。
解決方法是跳出回圈。我也改,你初始化變數,以確保它的初始化所有。
public void setMenu(String menu) {
this.menu = menu;
price = 0.0;
for (int i = 0; i < menuList.length; i ) {
if (this.menu.equalsIgnoreCase(menuList[i][0])){
price = Double.valueOf(menuList[i][1]);
break;
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/362862.html
