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:一开始做的时候用的方法特别笨。。。当出现多个信息的时候,方法的冗余度大大增加,对此进行了优化,当然还有部分细节的问题没有加入,也是实现了基本的功能
自我感觉良好。。。。