C#读写问题?

吴青峰 2008-06-24 07:52:04
//查找事件
private void btnSearch_Click(object sender, EventArgs e)
{
//获取名字
string name = txtName.Text.Trim();
//读文件
StreamReader sr = null;
string custmerName = "";
string address = "";
string phone = "";
string lineString = "";
//标记
bool flag = false;
try
{
sr = new StreamReader(path);
while ((lineString = sr.ReadLine()) != null)
{//循环读文本
if (lineString != "")
{
string[] msg = lineString.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries);
if (msg[0].Equals("姓名"))
{
custmerName = msg[1];
if (custmerName.Equals(name))
{
flag = true;
}
else
{
flag = false;
}
}
if (flag)
{
if (msg[0].Equals("地址"))
{
address = msg[1];
}
if (msg[0].Equals("电话"))
{
phone = msg[1];
}
break;
}
}
}
if (flag)
{
MessageBox.Show("客户姓名:" + custmerName + " 地址:" + address + " 电话:" + phone);
}
else
{
MessageBox.Show("没有你要找的客户!!!");
}

}
catch (Exception ioe)
{
Debug.WriteLine(ioe.Message);
}
finally
{
//释放资源
if (sr != null)
{
sr.Close();
}
}

}
这段代码没有什么异常,就是这句代码很奇怪:
MessageBox.Show("客户姓名:" + custmerName + " 地址:" + address + " 电话:" + phone);
名字都出来了,address ,phone却不显示出来,为什么?请师傅帮忙
...全文
56 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
吴青峰 2008-06-24
  • 打赏
  • 举报
回复
的确,两门语言非常相象,不过有一点值得肯定,C#要比java容易学,就拿javaWeb来说,我刚开始学习的时候,真的好吃力,呵呵,聊一些题外话.
吴青峰 2008-06-24
  • 打赏
  • 举报
回复
为什么这样说呢,因为我已经解决了,呵呵.对我多加了一个break!
但是问题有来了,
Hashtable customertable = new Hashtable(7);

customertable.Add("姓名", name);
customertable.Add("地址", address);
customertable.Add("电话", phone);
这个HashTable的中包含元素的大小,也就是7,为什么会影响,HashTable的迭带
输出,说的明了一点,输出的循序有所不同,小弟不解?请大哥赐教
吴青峰 2008-06-24
  • 打赏
  • 举报
回复
虽然不是我想要的结果,不过还是要感谢您!
老紫竹 2008-06-24
  • 打赏
  • 举报
回复
C#和Java真的好像啊,我哪天改行去学 .NET了,哈哈哈!
老紫竹 2008-06-24
  • 打赏
  • 举报
回复
if (flag)
{
if (msg[0].Equals("地址"))
{
address = msg[1];
}
if (msg[0].Equals("电话"))
{
phone = msg[1];
}
break;
}

这段代码明显有逻辑问题。
1 拿到了姓名,设置了标记
2 如果有标记,下一行则只能读取其中,因为后面break了。
也就是有地址,则没电话


如果你确认你的姓名后面是地址和电话,你可以在内部处理

custmerName = msg[1]; 
if (custmerName.Equals(name))
{
flag = true;
// 这里已经拿到姓名了,你可以继续读取信息啊!
lineString = sr.ReadLine(); // 判断吧
// 在读取一行
lineString = sr.ReadLine(); // 判断吧

....
break;
}
我想你的flag标记可以废掉了。呵呵!

吴青峰 2008-06-24
  • 打赏
  • 举报
回复
很急,谢谢!

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧