C#用字典实现商品竞猜(不同的方法,不同的实现,值得参考)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.Generic;

namespace Guess01
{
    class GuessGoods
    {
        //定义字典
        Dictionary<string, double> dc1 = new Dictionary<string, double>();
        Dictionary<int,string> dc2 = new Dictionary<int,string>();
        public void Initialize()
        {
            //添加商品的信息(字典)
            Console.WriteLine("下面将随机产生一商品信息");
            dc1.Add("电视", 5000);
            dc1.Add("电脑", 6000);
            dc1.Add("冰箱", 7000);
            dc1.Add("手机", 2100);
            //添加商品的信息(给商品设置编号,使得序号与商品名对应)
            dc2.Add(1 , "电视");
            dc2.Add(2 , "电脑");
            dc2.Add(3 , "冰箱");
            dc2.Add(4 , "手机");
            //设置随机数,分别代表每一个商品信息的编号
            Random rd = new Random();
            int i = rd.Next(1, 5);
            Console.Write(i + "号");
            //判断i 与 字典2对应的序号是否一致,一致则得到商品对应的金额
            foreach (int item in dc2.Keys)
            {
                //如果随机数等于字典2对应的序号,得到字典2的值(字符串类型)
                if (i == item)
                {
                    string goods = dc2[item];
                    Console.WriteLine("对应的商品为:" + goods);
                    Console.WriteLine();
                    //遍历字典1,得到字典1的键
                    foreach (string item2 in dc1.Keys)
                    {
                        //如果字典2的值等于字典1的键,从而得到字典1的值
                        if (goods == item2)
                        {
                            //goodsPrice为随机数对应的商品的价格
                            double goodsPrice = dc1[item2];
                            //Console.WriteLine("商品的价格为:" + goodsPrice);
                            //当取到商品对应的信息后,对商品的价格进行猜测
                            Console.WriteLine("开始猜测商品的价格吧~");
                            Boolean flag = true;
                            while(flag)
                            {
                                Console.WriteLine("输入{0}的价格吧" , goods);
                                double price = double.Parse(Console.ReadLine());
                                //当输入的价格与商品真正的价格相等时,显示猜对并退出循环
                                if (price == goodsPrice)
                                {
                                    Console.WriteLine("恭喜你猜对了");
                                    break;
                                }
                                else if (price > goodsPrice)
                                {
                                    Console.WriteLine("再小点");
                                }
                                else if (price < goodsPrice)
                                {
                                    Console.WriteLine("再大点");
                                }
                            }
                        }
                    }
                }
            }       
        }       
        static void Main(string[] args) 
        {
            GuessGoods gd = new GuessGoods();
            gd.Initialize();
            Console.ReadLine();
        }
    }
}
</pre><pre name="code" class="csharp">----------------------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Guess02
{
    class Program
    {


        static void Main(string[] args)
        {
            //定义字典
            Dictionary<string, double> dc1 = new Dictionary<string, double>();
            //添加商品的信息(字典)
            Console.WriteLine("下面将随机产生一商品信息");
            dc1.Add("电视", 5000);
            dc1.Add("电脑", 6000);
            dc1.Add("冰箱", 7000);
            dc1.Add("手机", 2100);
            //设置随机数,分别代表每一个商品信息的编号
            Random rd = new Random();
            int i = rd.Next(1, 5);
            Console.WriteLine(i + "号");
            //遍历字典,定义count存放遍历字典的次数,与随机数进行比较
            int count = 0;
            foreach(string item in dc1.Keys){
                count++;
                //当二者相等时,便可以取出当时的字典里面键对应的值
                if (count == i)
                {
                    Console.WriteLine("该商品为:" + item);
                    //goodsPrice为随机数对应的商品的价格
                    double goodsPrice = dc1[item];
                    //Console.WriteLine(dc1[item]);
                    //当取到商品对应的信息后,对商品的价格进行猜测
                    Console.WriteLine("开始猜测商品的价格吧~");
                    Boolean flag = true;
                    while (flag)
                    {
                        Console.WriteLine("输入{0}的价格" , item);
                        double price = double.Parse(Console.ReadLine());
                        //当输入的价格与商品真正的价格相等时,显示猜对并退出循环
                        if (price == goodsPrice)
                        {
                            Console.WriteLine("恭喜你猜对了");
                            break;
                        }
                        else if (price > goodsPrice)
                        {
                            Console.WriteLine("再小点");
                        }
                        else if (price < goodsPrice)
                        {
                            Console.WriteLine("再大点");
                        }
                    }
                }                         
            }           
            //Console.WriteLine("遍历了" + count + "次");
            Console.ReadLine();
        }
    }
}
ps:这个还是还没通过审核的时候加进来的,将字典的遍历次数与随机数进行比较,从而取出信息,感觉两个方法都挺好理解~
</pre><pre name="code" class="csharp">
ps:一开始做的时候用的方法特别笨。。。当出现多个信息的时候,方法的冗余度大大增加,对此进行了优化,当然还有部分细节的问题没有加入,也是实现了基本的功能
自我感觉良好。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值