黑马程序员技术交流社区

标题: switch (Convert.ToInt32(Console.ReadLine()))处手误老是报错,求改进 [打印本页]

作者: xt654005440    时间: 2013-7-28 21:51
标题: switch (Convert.ToInt32(Console.ReadLine()))处手误老是报错,求改进
本帖最后由 xt654005440 于 2013-7-29 15:58 编辑

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

作者: 崔旭东    时间: 2013-7-28 22:35
本帖最后由 崔旭东 于 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.             }
复制代码

作者: brucel50    时间: 2013-7-28 23:01
不太明白你的思路,你是想用switch判断输入的运算符号吗?
//switch (Convert.ToInt32(Console.ReadLine()))
作者: 马晓凤    时间: 2013-7-29 08:48
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

希望可以帮到您

作者: brucel50    时间: 2013-7-29 08:59
马晓凤 发表于 2013-7-29 08:48
int.TryParse(Console.ReadLine(),out i)

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

楼主的原意是这样的:
switch (Convert.ToInt32(Console.ReadLine()))
对输入的数字进行转换后再switch。
作者: 马晓凤    时间: 2013-7-29 09:04
brucel50 发表于 2013-7-29 08:59
楼主的原意是这样的:
switch (Convert.ToInt32(Console.ReadLine()))
对输入的数字进行转换后再switch ...

恩,不知输入0时,你的是什么运算?
作者: ww448483689    时间: 2013-7-29 12:26
别懒了 ,这样必须报错,你还是老老实实的做一个变量赋值,来个try  catch 抓异常吧。。。。。。。。。。。
作者: 黑骏马    时间: 2013-7-29 18:25
多敲回车会报错,那是不是你后面的代码的问题?
后面是不是还要求输入?直接敲回车等于输入为空,,,

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

建议把代码帖出来。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2