新手提问(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)哪里
答:随机取数组里的数
如:
string[] strPeople=new string[4]{"张三","李四","王二","麻子"};Random rdm = new Random();int nIndex = rdm.Next(0, 4)//随机取>=0且小于4的数.Console.WriteLine(strPeople[nIndex ]);//用下标去取人名
[解决办法]
四楼不是给你写清楚了么?还是我理解错你的意思了?
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)