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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙亚雄 中级黑马   /  2013-11-26 12:19  /  1739 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孙亚雄 于 2013-12-4 04:26 编辑

      
  1.             string input;
  2.             int number;
  3.             Console.WriteLine("请输入一个数字,输入q结束");
  4.             input = Console.ReadLine();
  5.             while (input != "q")
  6.             {
  7.                 number = Convert.ToInt32(input);
  8.                 Console.WriteLine("{0}的两倍是[1}", number, number * 2);
  9.                 Console.WriteLine("请输入一个数字,按q结束");
  10.                 input = Console.ReadLine();
  11.             }

  12.             Console.ReadKey();
复制代码
那出错了呢,怎么运行异常。。。看了好久都没发现,谢谢了

评分

参与人数 1技术分 +1 收起 理由
V_John + 1 赞一个!

查看全部评分

15 个回复

倒序浏览
你是不是没判断输入的数是否能转换为int类型的吧
string转换成int 最好用int.TryParse();
这是例子
  1. //1、 不断要求用户输入一个数字,然后打印这个数字的二倍,当用户输入q的时候程序退出。
  2.         static void Main(string[] args)
  3.         {
  4.             Console.WriteLine("请输入一个数字:");
  5.             string str = Console.ReadLine();//定义一个字符串变量,接收用户输入的值
  6.             int num;//定义一个int类型的变量
  7.             while (str!="q")//如果用户输入的值为q时程序退出,如果不为q,一直循环
  8.             {
  9.                 if (int.TryParse(str, out num))//如果用户输入的是数字
  10.                 {
  11.                     num *= 2;
  12.                     Console.WriteLine(num);//把用户输入的值*2并打印
  13.                 }
  14.                 else //如果用户输入的不是数字
  15.                 {
  16.                     Console.WriteLine("请输入正确的数值!");//提示用户输入正确的值
  17.                 }
  18.                 Console.WriteLine("请输入一个数字:");//提示用户进行下一次的输入
  19.                 str = Console.ReadLine();//接收用户输入的值
  20.             }
  21.             Console.WriteLine("程序退出");
  22.             Console.ReadKey();
复制代码

评分

参与人数 1技术分 +1 收起 理由
V_John + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 毛毛毛玉 于 2013-11-26 12:43 编辑

其实问题的关键是,楼主把一个花括号写成了方括号……
然后系统认定你输入的那东西应该是个日期格式……
嗯……看看你的第八行代码 =w=
原句是这个:
>>                Console.WriteLine("{0}的两倍是[1}", number, number * 2);

评分

参与人数 1技术分 +1 收起 理由
V_John + 1 眼睛很厉害啊!

查看全部评分

回复 使用道具 举报
本帖最后由 自由の风 于 2013-11-26 12:43 编辑

晕,看错了,楼上眼睛细

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
就那个方括号的问题,另外你加上“输入q结束”不好,让人容易有误解,在输入时最后加上q了,如果这样的话程序运行时会出错的   要不就加上判断    或者字符串截取   然后转换int型

评分

参与人数 1技术分 +1 收起 理由
V_John + 1 赞一个!

查看全部评分

回复 使用道具 举报
毛毛毛玉 发表于 2013-11-26 12:39
其实问题的关键是,楼主把一个花括号写成了方括号……
然后系统认定你输入的那东西应该是个日期格式……
嗯 ...

。。。。。手按坏了。。。。。。。。。谢谢啊
回复 使用道具 举报
xydsdsr 发表于 2013-11-26 12:34
你是不是没判断输入的数是否能转换为int类型的吧
string转换成int 最好用int.TryParse();
这是例子 ...

谢谢你.....我按错括号了。。。
回复 使用道具 举报
Console.WriteLine("{0}的两倍是[1}", number, number * 2);
楼上 已经解决了,就是符号的问题。。
回复 使用道具 举报
u010209195 发表于 2013-11-26 17:09
Console.WriteLine("{0}的两倍是[1}", number, number * 2);
楼上 已经解决了,就是符号的问题。。 ...

上联:为系统而生,为框架而死,为bug奋斗一辈子!
下联:吃符号的亏,上大小写的当,最后死在需求上!
横批:程序人生
:Q

评分

参与人数 1技术分 +1 收起 理由
V_John + 1 呵呵

查看全部评分

回复 使用道具 举报 1 0
  1. //不断要求用户输入一个数字,然后打印这个数字的二倍,当用户输入q的时候程序退出。
  2.             string input = "";
  3.             int number = 0;
  4.             while(input!="q")
  5.             {
  6.                 Console.WriteLine("请输入一个数字");
  7.                 input = Console.ReadLine();
  8.                 if (input != "q")
  9.                 {
  10.                     try
  11.                     {
  12.                         number = Convert.ToInt32(input);
  13.                     }
  14.                     catch
  15.                     {
  16.                         Console.WriteLine("输入异常,请重新输入");
  17.                         continue;
  18.                     }
  19.                     Console.WriteLine("{0}的二倍是{1}", number, number * 2);
  20.                 }
  21.             }
  22.             Console.ReadKey();
复制代码


这是我写的这个,当你输入的字符不能转换为int类型的时候,对异常的处理。希望对你有帮助
回复 使用道具 举报
Console.WriteLine("{0}的两倍是[1}", number, number * 2);
回复 使用道具 举报
Console.WriteLine("{0}的两倍是【1}", number, number * 2)中括号有错误,【1}应该改为{1};程序本身没有什么问题,知识含义不清, Console.WriteLine("请输入一个数字,输入q结束")有歧义,你是让人数字和q一块输入,还先输入数字运行后再输入q,如果是数字和q一块输入就会异常。
回复 使用道具 举报
Console.WriteLine("{0}的两倍是【1}", number, number * 2)中括号有错误,【1}应该改为{1};程序本身没有什么问题,知识含义不清, Console.WriteLine("请输入一个数字,输入q结束")有歧义,你是让人数字和q一块输入,还先输入数字运行后再输入q,如果是数字和q一块输入就会异常。
回复 使用道具 举报
问题如果解决了,请修改问题为已解决。
回复 使用道具 举报
亲,是符号的问题。Console.WriteLine()里面的符号要是{  }   不是【】
回复 使用道具 举报
  Console.WriteLine("{0}的两倍是[1}", number, number * 2);第八行代码,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马