1 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊
不幸的是,這個(gè)程序有太多問題,無法簡單地解決這個(gè)問題。您確實(shí)需要縮減程序并努力使其盡可能簡單。你的程序遠(yuǎn)比它需要的大。
在同一個(gè)文件中不能有兩個(gè)公共類。您的“GroceryPackage”類似乎沒有提供任何您無法使用 ArrayList 變量“l(fā)istofGrocery”本身的方法做的事情,除了跟蹤價(jià)格(它不做)。它不必要地使程序復(fù)雜化。
您可以嘗試完全刪除它的“public”關(guān)鍵字,或者使其成為 Main 的私有或靜態(tài)內(nèi)部類。但是,我建議只是擺脫它。我真的不認(rèn)為你需要它。
從技術(shù)上講,您還沒有達(dá)到第 2 步。沒有什么可以防止 ArrayList 中出現(xiàn)重復(fù)值。我會用 aHashMap<String, Double>
代替。這將允許您將“雜貨”存儲為字符串,其價(jià)格為 Double 值。
您可以在 GroceryPackage 中使用“getter”和“setter”方法來獲取、修改和返回您的 ArrayList,直接使用獲取變量GroceryPackage.listofGrocery
(如果變量是私有的,listofGrocery 將無法使用它),或者只是將其設(shè)為你的主要課程。最后一種是最簡單的選擇。
我注意到您實(shí)際上從未將“l(fā)istofGrocery”變量初始化為“GroceryPackage”的屬性。
從風(fēng)格上講,“l(fā)istofGrocery”應(yīng)該是“l(fā)istOfGrocery”。
您沒有在 GroceryList 中使用“grocery1”屬性。
要解決第二步,籃子上不應(yīng)添加重復(fù)的名稱
要么遍歷數(shù)據(jù)結(jié)構(gòu)中的所有值,要么使用拋出異?;蚍祷乜深A(yù)測類型值的數(shù)據(jù)結(jié)構(gòu),如果要添加的值內(nèi)部有重復(fù)值。確保無論您做什么,都不會替換數(shù)據(jù)結(jié)構(gòu)中已經(jīng)存在的任何值。
為了解決第三步,“用戶應(yīng)該能夠刪除指定名稱的雜貨?!?/strong>
你嘗試給你的“removeGrocery()”方法一個(gè)參數(shù),即使它不需要任何參數(shù)。此外,clear() 方法會刪除整個(gè) ArrayList 中的所有值。仔細(xì)查看可用于您選擇的任何數(shù)據(jù)結(jié)構(gòu)的方法。
對于第四步,“用戶應(yīng)該能夠看到購物籃中的所有內(nèi)容”。
遍歷籃子的所有內(nèi)容。
總結(jié)一下。
我大多避免給你關(guān)于你的程序問題的直接答案。但是,希望你能接受我所說的并意識到你哪里出錯(cuò)了。實(shí)際上,有成千上萬種不同的方法可以讓您的程序滿足要求。請務(wù)必在線仔細(xì)閱讀javadocs。他們是無價(jià)的。最后,我注意到您從不在程序中使用任何循環(huán)。這些是新手程序員最好的朋友。學(xué)會愛他們。
添加回答
舉報(bào)