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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ?﹪滾妳媽丶 于 2014-3-23 12:42 编辑

static void Main(string[] args)
        {
            Console.WriteLine("请输入1或2");
            int jie = FangFa(1, 2);
            Console.ReadKey();

        }
        static int FangFa(int zhi, int shu)
        {
            while (true)
            {
                int ck = Convert.ToInt32(Console.ReadLine());
                if (ck < zhi || ck > shu)
                {
                    Console.WriteLine("只能输入{0}或{1}", zhi, shu);
                }
                return ck;
            }
        }

评分

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

查看全部评分

11 个回复

正序浏览

            while (true)
            {
                int ck = Convert.ToInt32(Console.ReadLine());
                if (ck < zhi || ck > shu)
                {
                    Console.WriteLine("只能输入{0}或{1}", zhi, shu);
                    continue;
                }
                return ck;
            }
加个continue就行。

评分

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

查看全部评分

回复 使用道具 举报 1 0
发帖显示提问问题,有一个选项是编辑帖子,那里选择提问结束就好了。。。
回复 使用道具 举报
czwanglei 发表于 2014-3-22 18:37
当有人给你评论时,请把帖子编辑为提问结束,这样我好给你技术分。。

怎么编辑提问结束啊,是发贴就发提问结束的贴吗?我是新手。。
回复 使用道具 举报
当有人给你评论时,请把帖子编辑为提问结束,这样我好给你技术分。。
回复 使用道具 举报
mdb 中级黑马 2014-3-22 16:01:58
9#
本帖最后由 mdb 于 2014-3-22 16:03 编辑

  1. <P>    static int FangFa(int zhi, int shu)
  2.         {
  3.             bool isbreak=false;// 设置退出标志就能很好的控制是否结束循环</P>
  4. <P>            int ck =0;
  5.             while (!isbreak)
  6.             {
  7.                 Console.WriteLine("请输入1或2");
  8.                 ck = Convert.ToInt32(Console.ReadLine());
  9.                 if (ck < zhi || ck > shu)
  10.                 {
  11.                     Console.WriteLine("只能输入{0}或{1}", zhi, shu);
  12.                 }
  13.                 else isbreak=true;
  14.             }
  15.              return ck;
  16.         }</P>
复制代码

评分

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

查看全部评分

回复 使用道具 举报
czwanglei 发表于 2014-3-22 13:32
你这是死循环,最好不要写死循环。。

不好意思啊,疏忽了,if判断里忘了放等号了,那条件改成 if(ck >=zhi && ck <=shu)就ok了···
回复 使用道具 举报
恩你将return写入了循环体中,所以执行一次到return ck;时候函数就直接返回了。

static int FangFa(int zhi, int shu)
        {
           int ck=0;
            while (true)
            {
                ck = Convert.ToInt32(Console.ReadLine());
                if (ck < zhi || ck > shu)
                {
                    Console.WriteLine("只能输入{0}或{1}", zhi, shu);
                }      
            }
            return ck;
        }

评分

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

查看全部评分

回复 使用道具 举报
回忆~坚 发表于 2014-3-22 10:05
while (true)
            {
                int ck = Convert.ToInt32(Console.ReadLine());

你这是死循环,最好不要写死循环。。
回复 使用道具 举报
你把break放错地方了 这样无论输入什么都会直接跳出循环,可以在加个else把break放在里面,输入正确了再跳出循环:
  1.         static void Main(string[] args)
  2.         {
  3.             Console.WriteLine("请输入1或2");
  4.              int jie = FangFa(1, 2);
  5.              Console.ReadKey();
  6.         }
  7.         static int FangFa(int zhi, int shu)
  8.         {
  9.             while (true)
  10.             {
  11.                 int ck = Convert.ToInt32(Console.ReadLine());
  12.                 if (ck < zhi || ck > shu)
  13.                 {
  14.                     Console.WriteLine("只能输入{0}或{1}", zhi, shu);
  15.                 }
  16.                 else
  17.                 {
  18.                     return ck;
  19.                 }
  20.             }
  21.         }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
因为你将return写入了循环体中,所以第一次执行到这里的时候函数就直接返回了。
跳过本次循环应该用continue,跳出循环体用break。
自己试着写了一个:
  1.         static int Func(int num1, int num2)
  2.         {
  3.             int num = 0;
  4.             do
  5.             {
  6.                 if (!int.TryParse(Console.ReadLine(), out num))
  7.                 {
  8.                     Console.WriteLine("只能输入{0}或{1}!", num1, num2);
  9.                     continue;
  10.                 }
  11.                 if (num != num1 && num != num2)
  12.                 {
  13.                     Console.WriteLine("只能输入{0}或{1}!", num1, num2);
  14.                 }
  15.             } while (num != num1 && num != num2);
  16.             return num;
  17.         }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 回忆~坚 于 2014-3-23 21:40 编辑

while (true)
            {
                int ck = Convert.ToInt32(Console.ReadLine());
                if (ck >= zhi && ck <= shu)
                {
                    return ck;
                }
                else
                    Console.WriteLine("只能输入{0}或{1}", zhi, shu);
            }
这样改也可以,你源代码的错误是在判断之后他还是会直接return ck,直接跳出了整个函数,所有不能继续循环。

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马