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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马振伟 中级黑马   /  2014-5-12 23:18  /  1254 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 马振伟 于 2014-5-14 18:16 编辑
  1. //要求用户不断的输入一个数然后打印这个数的2倍按Q退出
  2.             int i = 0;
  3.             double number;
  4.             bool falg = true;
  5.             try
  6.             {
  7.                
  8.                
  9.                 do
  10.                 {
  11.                     Console.WriteLine("请输入一个数字输入非数字退出");
  12.                      number = Convert.ToDouble(Console.ReadLine());
  13.                      while (i< number * 2)
  14.                      {
  15.                         
  16.                          Console.WriteLine("您打印的第{0}份", i + 1);
  17.                          i++;
  18.                         
  19.                      }
  20.                      i = 0;              //这里的i  就是提问的
  21.                 }
  22.                 while (falg==true);
  23.                
  24.             }
  25.             catch
  26.             {
  27.                 Console.WriteLine("程序退出");
  28.                
  29.             
  30.             }
  31.       

  32.             Console.ReadKey();<div class="quote"><blockquote>循环中的i=0是为了防止比如用户输入一个数是8那么下次循环的时候 i 已经=8了输入8或者比8小的数字就不执行while循环了有什么更好的方法可以解决此类问题<div class="quote"><blockquote>除了i=0还有别的什么方法啊
复制代码






3 个回复

倒序浏览
什么意思 ?  i提问 。这里的i是为了循环需要,你用调试走一边就知道 do里面语句要执行下去 就要保证i的值以初始值调用 即在最后 给i=0初值  使循环继续下去,直到输入q结束
回复 使用道具 举报 1 0
利用try-catch  和while语句的嵌套判断用户输入是否正确,再自定义TT方法判断输入是否是数字,下面是我做的源码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace tes1
{
    class Program
    {
        //1、 不断要求用户输入一个数字,然后打印这个数字的二倍,当用户输入q的时候程序退出。
        static void Main(string[] args)
        {
            
            do                          //第一层循环判断用户是否退出
            {
                Console.WriteLine("请输入一个数字:");
                string  _number = Console.ReadLine();//定义整形变量_number接受用户输入的值      

                TT t = new TT();
                bool b = true;     //定义bool类型b  判断用户输入类型
                while (b)               
                {
                    if (t.b(_number))
                    {
                        int number = 2 * Convert.ToInt32(_number);//按题目要求,先乘二倍,BUG :用户输入范围在-2^16到2^16-1之间整数超出提示错误
                        Console.WriteLine("{0}的二倍等于:\n{1}",_number,number);
                        Console.WriteLine("退出请输入q     点回车键继续重新计算");
                        b = false;
                    }
                    else
                    {
                        Console.WriteLine("输入数字含有非数字请重新输入");
                        _number = Console.ReadLine();
                        
                    }
                }
   
            }
            while (Console.ReadLine() != "q");

        }


        private class TT      //     新建类判断用户输入是否为数字
        {
            public bool b(string s)
            {
                string pattern = "^[0-9]*$";        
                Regex rx = new Regex(pattern);
                return rx.IsMatch(s);
            }

        }
    }
}

评分

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

查看全部评分

回复 使用道具 举报
王运波 发表于 2014-5-13 10:33
利用try-catch  和while语句的嵌套判断用户输入是否正确,再自定义TT方法判断输入是否是数字,下面是我做的 ...

感觉写的很好可惜我水平不够有一半看不懂!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马