首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

新手提问(6)!解决方法

2012-01-06 
新手提问(6)!某部门某天要在部门中随机抽取2名员工 参加公司的才艺比赛,性别不限,会唱歌,跳舞,魔术表演者

新手提问(6)!
某部门某天要在部门中随机抽取2名员工 参加公司的才艺比赛,性别不限,会唱歌,跳舞,魔术表演者均可,年龄20-35之间,但若是男生,身高为 1.75以上,女生身高为 1.60以上,若选不到2位,视为自动弃权,请为该部门写一个小程序实现以上功能
(定义员工结构:工号,部门,姓名,年龄,特长,身高)
-----------------------------以上是题目————————————————————————————————
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace ConsoleApplication22
{
  class Program
  {
   
  struct BM
  {
  public int id;
  public string name;
  public string dept;
  public string features;
  public double height;
  public int age;
  public string sex;

  }
  public static void man(int x)
  {
  int n = 0;
  BM[] A = new BM[x];
  ArrayList B = new ArrayList();
  Random rand1 = new Random();//定义随机选取!
  for (int i = 0; i < A.Length; i++)
  {

  Console.WriteLine("******************请输入员工信息*******************:");
  Console.WriteLine("请输入第{0}员工编号:", i);
  A[i].id = int.Parse(Console.ReadLine());

  Console.WriteLine("请输入第{0}员工姓名:", i);
  A[i].name = Console.ReadLine();

  Console.WriteLine("请输入第{0}员工身高:", i);
  A[i].height = double.Parse(Console.ReadLine());

  Console.WriteLine("请输入第{0}员工年龄:", i);
  A[i].age = int.Parse(Console.ReadLine());
  if (A[i].age < 0 && A[i].age > 70)
  throw new Exception();

  Console.WriteLine("请输入第{0}员工性别:", i);
  A[i].sex = Console.ReadLine();
  if (A[i].sex != "NA" && A[i].sex != "NV")
  throw new Exception();

  Console.WriteLine("请输入第{0}员工所在部门:", i);
  A[i].dept = Console.ReadLine();

  Console.WriteLine("请输入第{0}员工特长:", i);
  A[i].features = Console.ReadLine();

  }
  for (int i = 0; i < A.Length; i++)
  {
  if (A[i].sex == "NA" && A[i].age <= 35 && A[i].age >= 20 && A[i].height > 1.75 || A[i].sex == "NV" && A[i].age <= 35 && A[i].age >= 20 && A[i].height > 1.60)
  {
  n++;
  B.Add(A[i].name);//将符合条件的人的姓名 装入动态数组,这里是否装入正确!
   
  }
  }
  if (n >= 2)
  {
  int a = rand1.Next();// 1 问题主要错误区!
  object i =(ArrayList)B[a];// 2 问题主要错误区!

  int b = rand1.Next();// 3 问题主要错误区!
  object j=(ArrayList)B[b];// 4 问题主要错误区!
  Console.WriteLine(i+""+j);// 将前面4句话在随机数组中选取的动态数组成员输出,
  }
  else
  {
  Console.WriteLine("由于该部门人员不足,视为自动弃权!");
  }

  }
  static void Main(string[] args)
  {
  Console.WriteLine("请输入员工人数");
  int x = int.Parse(Console.ReadLine());
  man(x);



  }
  }
}
---------------------
问题主要出在随机选取(1,2,3,4)哪里,望高手帮忙修改下,小弟感激不尽!


[解决办法]
Random rand1 = new Random();
int a = rand1.Next(int minValue, int maxValue);

[解决办法]
不是很清楚你想干什么,你的程序整体山有问题,比如性别,你让用户输入,我觉的,你要么提示,那么给出选项,直接那样不合适
[解决办法]
问题好长,你的意思是想随机抽人是吧.
问:问题主要出在随机选取(1,2,3,4)哪里
答:随机取数组里的数
如:

C# code
string[] strPeople=new string[4]{"张三","李四","王二","麻子"};Random rdm = new Random();int nIndex = rdm.Next(0, 4)//随机取>=0且小于4的数.Console.WriteLine(strPeople[nIndex ]);//用下标去取人名
[解决办法]
四楼不是给你写清楚了么?还是我理解错你的意思了?

C# code
 ArrayList al = new ArrayList(); al.Add("张三"); al.Add("李四"); al.Add("王二"); al.Add("麻子"); Random rdm = new Random(); int n = rdm.Next(0,4); Console.WriteLine(al[n]);
[解决办法]
你定义的:BM[] A = new BM[x]; 
在这里面for (int i = 0; i < A.Length; i++)的A对象为空,不能进去for循环。而导致后面
int a = rand1.Next(); “得不到里面的数” 
object i =(ArrayList)B[a]; “取的一维数组里面的值为空”
[解决办法]
上面应该说得都比较全了啊。。。rand1.Next(); 要限制范围啊 rand.Next(0,4)

热点排行