A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 xt654005440 于 2013-7-29 15:58 编辑

RT,刚刚做小结写了一个简单的科学计算器的程序,然后代码使用了switch (Convert.ToInt32(Console.ReadLine())) 进行选择何种运算的
但是经常手的习惯多敲几个回车便报错  “输入字符串的格式不正确。”
请问这个地方有没有更好的表达语句完善这个语句,或者说用其他方法避免这种手误的错误?{:soso_e132:}

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

7 个回复

倒序浏览
本帖最后由 崔旭东 于 2013-7-28 22:38 编辑
  1.             int i;
  2.             while (true)
  3.             {
  4.                 if (int.TryParse(Console.ReadLine(),out i))
  5.                 {
  6.                     break;
  7.                 }
  8.                 Console.WriteLine("输入有误,重新输入!");
  9.             }
  10.             switch (i)
  11.             {
  12.                 //代码
  13.             }
复制代码
回复 使用道具 举报
不太明白你的思路,你是想用switch判断输入的运算符号吗?
//switch (Convert.ToInt32(Console.ReadLine()))
回复 使用道具 举报
brucel50 发表于 2013-7-28 23:01
不太明白你的思路,你是想用switch判断输入的运算符号吗?
//switch (Convert.ToInt32(Console.ReadLine()) ...

int.TryParse(Console.ReadLine(),out i)

这个表达式:第一个参数是要转换的字符串;第二个是用来保存转换后的值得,out关键字 是指i是输出参数
如果转换成功的话这个方法:
int.TryParse(Console.ReadLine(),out i)返回true,i中就是转换后的值
如果转换失败,返回false,i中的值为0

希望可以帮到您

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

回复 使用道具 举报
马晓凤 发表于 2013-7-29 08:48
int.TryParse(Console.ReadLine(),out i)

这个表达式:第一个参数是要转换的字符串;第二个是用来保存转 ...

楼主的原意是这样的:
switch (Convert.ToInt32(Console.ReadLine()))
对输入的数字进行转换后再switch。
回复 使用道具 举报
brucel50 发表于 2013-7-29 08:59
楼主的原意是这样的:
switch (Convert.ToInt32(Console.ReadLine()))
对输入的数字进行转换后再switch ...

恩,不知输入0时,你的是什么运算?
回复 使用道具 举报
别懒了 ,这样必须报错,你还是老老实实的做一个变量赋值,来个try  catch 抓异常吧。。。。。。。。。。。
回复 使用道具 举报
多敲回车会报错,那是不是你后面的代码的问题?
后面是不是还要求输入?直接敲回车等于输入为空,,,

还有,使用了switch (Convert.ToInt32(Console.ReadLine())) 进行选择何种运算 是什么意思?输入12345来选择加减乘除模?如果是输入+-*、%,那代码是会报错无法转换类型的。

建议把代码帖出来。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马