黑马程序员技术交流社区

标题: 关于while循环异常 [打印本页]

作者: 孙亚雄    时间: 2013-11-26 12:19
标题: 关于while循环异常
本帖最后由 孙亚雄 于 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();
复制代码
那出错了呢,怎么运行异常。。。看了好久都没发现,谢谢了


作者: xydsdsr    时间: 2013-11-26 12:34
你是不是没判断输入的数是否能转换为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();
复制代码

作者: 毛毛毛玉    时间: 2013-11-26 12:39
本帖最后由 毛毛毛玉 于 2013-11-26 12:43 编辑

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

作者: 自由の风    时间: 2013-11-26 12:41
本帖最后由 自由の风 于 2013-11-26 12:43 编辑

晕,看错了,楼上眼睛细
作者: 许杰    时间: 2013-11-26 14:04
就那个方括号的问题,另外你加上“输入q结束”不好,让人容易有误解,在输入时最后加上q了,如果这样的话程序运行时会出错的   要不就加上判断    或者字符串截取   然后转换int型
作者: 孙亚雄    时间: 2013-11-26 14:15
毛毛毛玉 发表于 2013-11-26 12:39
其实问题的关键是,楼主把一个花括号写成了方括号……
然后系统认定你输入的那东西应该是个日期格式……
嗯 ...

。。。。。手按坏了。。。。。。。。。谢谢啊
作者: 孙亚雄    时间: 2013-11-26 14:16
xydsdsr 发表于 2013-11-26 12:34
你是不是没判断输入的数是否能转换为int类型的吧
string转换成int 最好用int.TryParse();
这是例子 ...

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

上联:为系统而生,为框架而死,为bug奋斗一辈子!
下联:吃符号的亏,上大小写的当,最后死在需求上!
横批:程序人生
:Q
作者: 为梦而生    时间: 2013-11-26 21:06
  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类型的时候,对异常的处理。希望对你有帮助
作者: 刘吉烨    时间: 2013-11-27 11:28
Console.WriteLine("{0}的两倍是[1}", number, number * 2);

作者: 大牙到潍坊    时间: 2013-11-27 12:48
Console.WriteLine("{0}的两倍是【1}", number, number * 2)中括号有错误,【1}应该改为{1};程序本身没有什么问题,知识含义不清, Console.WriteLine("请输入一个数字,输入q结束")有歧义,你是让人数字和q一块输入,还先输入数字运行后再输入q,如果是数字和q一块输入就会异常。
作者: 大牙到潍坊    时间: 2013-11-27 12:49
Console.WriteLine("{0}的两倍是【1}", number, number * 2)中括号有错误,【1}应该改为{1};程序本身没有什么问题,知识含义不清, Console.WriteLine("请输入一个数字,输入q结束")有歧义,你是让人数字和q一块输入,还先输入数字运行后再输入q,如果是数字和q一块输入就会异常。
作者: 茹化肖    时间: 2013-11-29 18:51
问题如果解决了,请修改问题为已解决。
作者: ax5526388    时间: 2013-11-30 10:51
亲,是符号的问题。Console.WriteLine()里面的符号要是{  }   不是【】
作者: 上帝的尊严    时间: 2013-12-3 13:50
  Console.WriteLine("{0}的两倍是[1}", number, number * 2);第八行代码,




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