s114747867 发布留言 2008-7-22 13:43
大家帮我解释一个动态数组错误的问题
大家帮我看看我的这个程序动态数组怎么没用
这是个停车场的的添加
bool IfHuoche(ref HuoChe hc)
{
bool ifrigth = false;
bool ifContinue = true;
while (ifContinue)
{
Console.WriteLine("请输入车的排量,输入n退出本次添加!");
string input=Console.ReadLine();
if (input.ToLower()=="n")
{
ifContinue = false;
}
else if (int.Parse(input) >= 10 && int.Parse(input) <= 100)
{
hc.Pailiang = Int32.Parse(input);
Console.WriteLine("请输入您的车牌号!");
string carname = Console.ReadLine();
bool name = Worke.Juge10(carname);
if (name)
{
hc.Carnumber = carname;
Console.WriteLine("请输入您的姓名!");
hc.Ownername = Console.ReadLine();
if (carinfor == null)
{
carinfor = new ArrayList();
}
Car c = (Car)hc;
carinfor.Add(c);
ifrigth = true;
continue;
}
else
{
Console.WriteLine("您的必须是位的号码!");
}
}
else
{
Console.WriteLine("您的排量超标,不能进!");
}
}
return ifrigth;
}
我在线等 大家帮我看看 我都迷茫半天了
其中动态数组是 ArrayList carinfor
yangyaming6208 发布留言 2008-7-22 13:50
ArrayList carinfor = new ArrayList();
这么定义吧?
s114747867 发布留言 2008-7-22 13:52
这个没问题的 我先定义没实例化
itwalker 发布留言 2008-7-22 13:54
if (carinfor == null)
{
carinfor = new ArrayList();
}
以上代码不应该这样写.变量在类的构造中初始化.
s114747867 发布留言 2008-7-22 13:54
Car 是我做的一个类 用来存放车辆信息的 比如 pailiang ..... hc是Car的实例化对象
yangyaming6208 发布留言 2008-7-22 13:54
源代码发我看看!
s114747867 发布留言 2008-7-22 13:55
源代码400多行 要看我就发
s114747867 发布留言 2008-7-22 13:56
using System;
using System.Collections;
namespace StopStation
{
///
/// 检验
/// class CheckInfor
{
public static bool ifPaiLiang(int pailiang)
{
if (pailiang<10 ||pailiang>100)
{
return false;
}
else
{
return true;
}
}
public static bool ifSudu(int sudu)
{
if (sudu < 10 || sudu > 100)
{
return false;
}
else
{
return true;
}
}
public static bool ifzhuangxiou(string zhuanxiu)
{
if (zhuanxiu.Equals("差"))
{
return false;
}
else
{
return true;
}
}
}
enum CarClass
{
货车,轿车,面包车
}
enum Station
{
已出,未出
}
class Program
{
static void Main()
{
Worke wor = new Worke();
bool isgoon = true;
Console.WriteLine("请输入要选择的种类:1进车;2出车;'N'表示退出");
string input=Console.ReadLine();
input = input.ToLower();
while (isgoon)
{
switch (input)
{
case "1":
wor.AddCar();
break;
case "2":
wor.DellCar();
break;
case "3":
break;
default:
break;
}
}
}
}
class Worke
{
ArrayList carinfor;
public ArrayList Carinfor
{
get { return carinfor; }
set { carinfor = value; }
}
public void ShowInfor()
{
if (carinfor==null)
{
Console.WriteLine("现在停车场还没有停过车!");
}
else
{
Console.WriteLine("车类 车号 车主名 状态 排量 速度 装修");
foreach (object o in carinfor)
{
try
{
Car c = (Car)o;
if (c.Cc == CarClass.货车)
{
HuoChe hc = (HuoChe)c;
Console.WriteLine(hc.Cc.ToString() + " " + hc.Carnumber + " " + hc.Ownername + " " + hc.Sta.ToString() + " " + hc.Pailiang.ToString());
}
else if (c.Cc == CarClass.轿车)
{
JiaoChe jc = (JiaoChe)c;
Console.WriteLine(jc.Cc.ToString() + " " + jc.Carnumber + " " + jc.Ownername + " " + jc.Sta.ToString() + " " +jc.Shudu.ToString());
}
else if (c.Cc == CarClass.面包车)
{
MianBaoChe mb = (MianBaoChe)c;
Console.WriteLine(mb.Cc.ToString() + " " +mb.Carnumber + " " + mb.Ownername + " " + mb.Sta.ToString() + " " + mb.Zhuanxiu.ToString());
}
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
public void AddCar()
{
bool ifContinue = true ;
string input;
while (ifContinue)
{
Console.WriteLine("请出入您想添加车的种类,种类有,货车,轿车,面包车三种,按n退出本次操作");
input = Console.ReadLine();
input = input.ToLower();
switch (input)
{
case "货车":
HuoChe hc = new HuoChe();
hc.Cc = CarClass.货车;
bool add=IfHuoche(ref hc);
if (add)
Console.WriteLine("添加完成!");
else Console.WriteLine("添加不成功!");
break;
case "轿车":
JiaoChe jc=new JiaoChe();
jc.Cc=CarClass.轿车;
ifjiaoche(ref jc);
break;
case "面包车":
MianBaoChe mb = new MianBaoChe();
mb.Cc = CarClass.面包车;
ifmianbao(ref mb);
break;
case "n":
ifContinue = false;
break;
default:
Console.WriteLine("您的输入又误!您的输入是:"+input+'\n');
break;
}
}
}
public void DellCar()
{
Console.WriteLine("--------------");
if (carinfor == null)
{
Console.WriteLine("停车场现在没有车");
}
else
{
Console.WriteLine("请输入要出车辆的车牌号");
string input = Console.ReadLine();
bool rigthput = Worke.Juge10(input);
if (rigthput)
{
foreach (object o in carinfor)
{
Car dellCar = (Car)o;
if (dellCar.Carnumber == input)
{
carinfor.Remove(dellCar.Carnumber);
Console.WriteLine("删除成功");
}
}
}
else
{
Console.WriteLine("车牌号必须是一个5位号的数字");
}
}
}
bool IfHuoche(ref HuoChe hc)
{
bool ifrigth = false;
bool ifContinue = true;
while (ifContinue)
{
Console.WriteLine("请输入车的排量,输入n退出本次添加!");
string input=Console.ReadLine();
if (input.ToLower()=="n")
{
ifContinue = false;
}
else if (int.Parse(input) >= 10 && int.Parse(input) <= 100)
{
hc.Pailiang = Int32.Parse(input);
Console.WriteLine("请输入您的车牌号!");
string carname = Console.ReadLine();
bool name = Worke.Juge10(carname);
if (name)
{
hc.Carnumber = carname;
Console.WriteLine("请输入您的姓名!");
hc.Ownername = Console.ReadLine();
if (carinfor == null)
{
carinfor = new ArrayList();
}
Car c = (Car)hc;
carinfor.Add(c);
ifrigth = true;
continue;
}
else
{
Console.WriteLine("您的必须是5位的号码!");
}
}
else
{
Console.WriteLine("您的排量超标,不能进!");
}
}
return ifrigth;
}
bool ifjiaoche(ref JiaoChe jc)
{
bool ifrigth = false;
bool ifContinue = true;
while (ifContinue)
{
Console.WriteLine("请输入车的速度,输入n退出本次添加!");
string input = Console.ReadLine();
if (input.ToLower() == "n")
{
ifContinue = false;
}
else if (int.Parse(input) > 0 && int.Parse(input) < 60)
{
jc.Shudu = Int32.Parse(input);
Console.WriteLine("请输入您的车牌号!");
string carname = Console.ReadLine();
bool name = Worke.Juge10(carname);
if (name)
{
jc.Carnumber = carname;
Console.WriteLine("请输入您的姓名!");
jc.Ownername = Console.ReadLine();
if (carinfor == null)
{
carinfor = new ArrayList();
}
Car c = (Car)jc;
carinfor.Add(c);
ifrigth = true;
}
else
{
Console.WriteLine("您的必须是5位的号码!");
}
}
else
{
Console.WriteLine("您的速度超标,不能进入!");
}
}
return ifrigth;
}
bool ifmianbao(ref MianBaoChe mb)
{
bool ifrigth = false;
bool ifContinue = true;
while (ifContinue)
{
Console.WriteLine("请输入车的车体装修情况(只能输入 :优 良 差),输入n退出本次添加!");
string input = Console.ReadLine();
bool check = CheckInfor.ifzhuangxiou(input);
if (input.ToLower() == "n")
{
ifContinue = false;
}
else if (check)
{
mb.Zhuanxiu = input;
Console.WriteLine("请输入您的车牌号!");
string carname = Console.ReadLine();
bool name = Worke.Juge10(carname);
if (name)
{
mb.Carnumber = carname;
Console.WriteLine("请输入您的姓名!");
mb.Ownername = Console.ReadLine();
if (carinfor == null)
{
carinfor = new ArrayList();
}
Car c = (Car)mb;
carinfor.Add(c);
ifrigth = true;
}
else
{
Console.WriteLine("您的必须是5位的号码!");
}
}
else
{
Console.WriteLine("您的装修情况不符合规定,不能进入!");
}
}
return ifrigth;
}
public static bool Juge10(string b)
{
bool istwonumber = true;
if (b.Length != 5)
{
istwonumber = false;
}
else
{
string j;
int k;
for (int i = b.Length - 1; i >= 0; i--)
{
if (!char.IsLetter(b.ToString();
k = Convert.ToInt32(j);
if (k >= 0 && k <= 9)
{ continue; }
else
{
istwonumber = false;
break;
}
}
else istwonumber = false;
}
}
return istwonumber;
}
}
class Car
{
///
/// 类型
/// protected CarClass cc;
internal CarClass Cc
{
get { return cc; }
set { cc = value; }
}
protected string carnumber;
public string Carnumber
{
get { return carnumber; }
set { carnumber = value; }
}
protected string ownername;
public string Ownername
{
get { return ownername; }
set { ownername = value; }
}
protected Station sta=Station.未出
;
public Station Sta
{
get { return sta; }
set { sta = value; }
}
}
class HuoChe:Car
{
int pailiang;
public int Pailiang
{
get { return pailiang; }
set { pailiang = value; }
}
}
class JiaoChe:Car
{
int shudu;
public int Shudu
{
get { return shudu; }
set { shudu = value; }
}
}
class MianBaoChe:Car
{
string zhuanxiu;
public string Zhuanxiu
{
get { return zhuanxiu; }
set { zhuanxiu = value; }
}
}
}
yangyaming6208 发布留言 2008-7-22 14:12
你要求达到什么效果?
yangyaming6208 发布留言 2008-7-22 15:16
好了,问题解决了
需要的话就回复我!
yangyaming6208 发布留言 2008-7-22 15:22
代码有点乱,看半天,原来是你的主函数出了问题,问你话,你半天不回(结果我在那猜你什么意图,郁闷!)
别的地方好像没问题(可能有的地方修改了),但主要问题在主函数上面.
下面是我修改过的主函数,不知道你是否满意?
static void Main()
{
Worke wor = new Worke();
bool isgoon = true;
while (isgoon)
{
Console.WriteLine("请输入要选择的种类:1进车;2出车;'N'表示退出");
string input = Console.ReadLine();
input = input.ToLower();
switch (input)
{
case "1":
wor.AddCar();
break;
case "2":
wor.DellCar();
break;
case "n":
isgoon = false;
break;
default:
break;
}
}
}
页: [1]