A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张弗睿 中级黑马   /  2016-11-4 23:23  /  1624 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  map中有如下数据:{茄子 = 2.0, 黄瓜 = 2.5 ,西红柿 = 5.0, 土豆 = 3.0 , 豆角 = 3.5}(12分)
                a. 实现一个询问价格的方法(获取用户在控制台上输入的蔬菜名称,然后在该map集合中查询对应的价格)有,则输出相对应的价格,如果
                没有则提示用户“已经卖完”(4分)
                b. 将黄瓜的价格上调 1 元,(不能直接赋值3.5)(3分)
                c. 将所有蔬菜的价格大于3的蔬菜名称打印到控制台(5分)

11 个回复

倒序浏览
本帖最后由 张弗睿 于 2016-11-4 23:29 编辑

Scanner sc = new Scanner(System.in);
                Double d = sc.nextDouble();

                String key = askPrice(d);
                System.out.println(key);
        }

        private static String askPrice(Double d) {
                HashMap<String,Double> hm = new HashMap<>();
                hm.put("茄子", 2.0);
                hm.put("黄瓜", 2.5);
                hm.put("西红柿", 5.0);
                hm.put("土豆", 3.0);
                hm.put("豆角", 3.5);
                for (String key : hm.keySet()) {
                        if (d == hm.get(key)){        
                                return key;
                        }
                }
                return null;
        }

}
//询问价格这么做,键盘录入后 ,返回值是null,哪里出毛病了
回复 使用道具 举报
你调错方法了  keySet的返回值 是Set集合类型 这个方法是主要是用于遍历Map集合时用的,要询问价格的话 通过查询Key的值来获得。
回复 使用道具 举报

部分代码如下:

[Java] 纯文本查看 复制代码
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Map<String,Double>  map = new HashMap<String,Double>();
		map.put("茄子", 2.0);
		map.put("黄瓜", 2.5);
		map.put("西红柿", 5.0);
		map.put("土豆", 3.0);
		map.put("豆角", 3.5);
		
		Scanner sc = new Scanner(System.in);
		String input = sc.next();
		Double num = map.get(input);
		if(num == null){
			System.out.println("已经卖完");
		}else{
			System.out.println(num);
		}
		
	}
}
回复 使用道具 举报
默默路过~~~。。。。寂寞的潜水
回复 使用道具 举报

本帖最后由 张弗睿 于 2016-11-4 23:29 编辑


Scanner sc = new Scanner(System.in);
                Double d = sc.nextDouble();

                String key = askPrice(d);
                System.out.println(key);
        }

        private static String askPrice(Double d) {
                HashMap<String,Double> hm = new HashMap<>();
                hm.put("茄子", 2.0);
                hm.put("黄瓜", 2.5);
                hm.put("西红柿", 5.0);
                hm.put("土豆", 3.0);
                hm.put("豆角", 3.5);
                for (String key : hm.keySet()) {
                        if (d == hm.get(key)){        
                                return key;
                        }
                }
                return null;
        }

}
回复 使用道具 举报
这个有点难度
回复 使用道具 举报
不过代码也不多
回复 使用道具 举报
Tyoo 中级黑马 2016-11-5 22:44:15
9#
控制台录入的应该是蔬菜名,就应该是String,要打印价格,askPrice方法返回的应该是价格double。这个程序你录入蔬菜名吗?不能存为Double类型的d,录入不会出错吗?其次,除了d==get(key),以外,所有其他的情况都会返回null,因为最后那个return在循环外
回复 使用道具 举报
Tyoo 中级黑马 2016-11-6 00:23:00
10#
[Java] 纯文本查看 复制代码
public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		HashMap<String, Double> verg = new HashMap<>();
		
		verg.put("茄子", 2.0);
		verg.put("黄瓜", 2.5);
		verg.put("西红柿", 5.0);
		verg.put("土豆", 3.0);
		verg.put("豆角", 3.5);
		
		System.out.println("请输入蔬菜名称:");
		String line = sc.nextLine();
		//	查询蔬菜价格
		checkPrice(verg,line);
		
		String item = "黄瓜";
		verg.put(item, verg.get(item) + 1.0);
		
		System.out.println("--------------------------------------------");
		
		System.out.println("打印集合:");
		System.out.println(verg);
		System.out.println("--------------------------------------------");
		
		//	价格大于3的蔬菜打印出来
		System.out.println("价格大于3.0的蔬菜有:");
		Set<String> vergName = verg.keySet();
		for (String name : vergName) {
			if(verg.get(name) > 3.0) {
				System.out.println(name);
			}
		} 

	}

	private static void checkPrice(HashMap<String, Double> verg, String name) {
		
		
		Set<String> vergName = verg.keySet();
		if(vergName.contains(name)) {
			System.out.println(name + ":" + verg.get(name));
		} else {
			System.out.println(name + "已经卖完!");
		}
	}
回复 使用道具 举报
张弗睿 发表于 2016-11-4 23:26
Scanner sc = new Scanner(System.in);
                Double d = sc.nextDouble();

看错题了,应该输入的是蔬菜名,已经做出来了,感谢各位大神
回复 使用道具 举报
大神好多啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马