Java:使用字符串参数

时间:2017-05-08 01:21:57

标签: java hashmap

到目前为止,我已经搜索过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);

    }
}

3 个答案:

答案 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()方法的局部变量。您有两种选择:

  1. 将地图作为第二个参数传递给seePrice方法,以便查询价格。
  2. restaurantMenu类的字段设为Restaurant
  3. 第二个选项有两个子选项: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()