到目前为止,我已经搜索过google和SO而没有运气。这可能是由于我缺乏知识,也很难知道如何正确搜索我的答案。
从概念上讲,我希望有一个方法需要一个字符串,然后在其代码块中使用该字符串来指导基本的System.out.println
import java.util.HashMap;
public class Restaurant {
public static void main(String[] args) {
HashMap<String, Integer> restaurantMenu = new HashMap<String, Integer>();
restaurantMenu.put("Turkey Burger",13);
restaurantMenu.put("Naan Pizza",11);
restaurantMenu.put("Cranberry Kale Salad",10);
seePrice("Naan Pizza");
/* I want to create a method called seePrice, which expects a string input
(which will ultimately be a name of one of the food items on the menu).
Then it goes on to use that string input in:
System.out.println(restaurantMenu.get(stringinputgoeshere));
So that I can simply type seePrice("Naan Pizza");
and it will display the price in the console
*/
}
}
经过多次不同的尝试,我无法获得一些基本的东西来为我工作。请原谅我这样的新手。感谢所有帮助。
编辑以下内容(请注意一些多余的项目,例如sqft线被添加到设置器和吸气剂的简单进一步良好练习中)
import java.util.HashMap;
public class Restaurant {
//sqft section
private double sqft = 0.0;
public Restaurant(){
sqft = 500.0;
}
public Restaurant(double squareFeet){
sqft = squareFeet;
}
public double getSqft(){
return sqft;
}
//Menu section
private HashMap<String, Double> restaurantMenu = new HashMap<String, Double>();
public int setMenu(HashMap<String, Double> currentMenu){
this.restaurantMenu = currentMenu;
return 1;
}
public HashMap<String, Double> getMenu(){
return restaurantMenu;
}
public static void seePrice (HashMap<String, Double> menu, String food){
System.out.println(menu.get(food));
}
/////////Run Main Section Here
public static void main(String[] args) {
Restaurant platefulOfCox = new Restaurant(2120.8);
System.out.println("The square footage is "+platefulOfCox.getSqft());
HashMap<String, Double> tempMenu = new HashMap <String, Double>();
tempMenu.put("Pizza",10.99);
tempMenu.put("Burger",5.95);
tempMenu.put("Coke",1.99);
platefulOfCox.setMenu(tempMenu);
//Price Checker
String foodItem = "Coke";
seePrice(platefulOfCox.getMenu(),foodItem);
}
}
答案 0 :(得分:1)
你的问题是restaurantMenu的范围。您无法在主方法之外访问它。您需要将其声明为类的成员,或将其作为参数传递给seePrice方法。
import java.util.HashMap;
public class Restaurant {
private static HashMap<String, Integer> restaurantMenu;
public static void main(String[] args) {
restaurantMenu = new HashMap<String, Integer>();
....
答案 1 :(得分:1)
地图restaurantMenu
在任何方法seePrice(String)
中都不可见,因为它是main()
方法的局部变量。您有两种选择:
seePrice
方法,以便查询价格。restaurantMenu
类的字段设为Restaurant
。第二个选项有两个子选项:make restaurantMenu
a static
field(和seePrice()
a static
method)或将其设为实例字段并创建实例Restaurant
方法中的main()
。让一切static
变得更容易,但如果你要将程序发展到玩具范例之外,那么从长远来看就不那么灵活了。
答案 2 :(得分:0)
你大部分都在那里。只需将您的HashMap移动到自己的类中,也许123456789000
Value 123456789000 is a valid bar code!
1234567890A
Invalid bar code.
。类似的东西:
public class Menu
这是一个非常简单的实现。考虑通过方法而不是在构造函数中添加菜单项,并且您可能希望在打印到sys out之前检查传递给import java.util.Map;
import java.util.HashMap;
public class Menu {
private final Map<String, Integer> restaurantMenu = new HashMap<String, Integer>();
public Menu() {
restaurantMenu.put("Turkey Burger",13);
restaurantMenu.put("Naan Pizza",11);
restaurantMenu.put("Cranberry Kale Salad",10);
}
public void seePrice(final String item) {
System.out.println(restaurantMenu.get(item));
}
}
的项目是否在菜单上。
修改:在此处,在您的seePrice
中,只需创建main
并致电final Menu menu = new Menu()
。