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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 czwanglei 于 2014-3-10 13:49 编辑

   static void Main(string[] args)
        {
            int i = 0;

            string can = "n";
            string yes = "y";
            
            while (can.ToLower() == "n" && i < 10)
            {
                Console.WriteLine("同学们这道题你们会了吗");
                can = Console.ReadLine();
                i++;
            }

            //Console.WriteLine("放学吧");
            while (yes.ToLower() == "y")
            {
                Console.WriteLine("放学吧");
                yes = Console.ReadLine();


            }
        }

评分

参与人数 1技术分 +2 收起 理由
滔哥 + 2

查看全部评分

11 个回复

倒序浏览
Console.WriteLine("这道题你会做了吗输入y或n");
            string Jie = Console.ReadLine();
            while (Jie != "y" && Jie != "n")
            {
                Console.WriteLine("只能输入y和n请重新输入");
                Jie = Console.ReadLine();
            }
            if (Jie == "y")
            {
                Console.WriteLine("哦,你会做啊");
            }
            else
            {
                Console.WriteLine("哦,你不会做啊");
            }

            Console.ReadKey();

评分

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

查看全部评分

回复 使用道具 举报
我也是初学者,你要的是不是这种效果?  
你的错误我只能看懂一点,你先定义了两个变量存y和n 然后又用这两个变量来接收用户输入的信息。。所以你这个是重新赋值。所以你这个输入什么都是一样。 不知道我因答的正确不正确!!
还有我想请教楼主,你这个can.ToLower是什么意思。你能告诉我吗

评分

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

查看全部评分

回复 使用道具 举报
你这程序只有"放学"一条路可走,太狠啦,怎么都会"放学".
  1. static void Main(string[] args)
  2.         {
  3.             string answer;
  4.             Console.Write("同学们,这道题你们会了吗? ");
  5.             answer = Console.ReadLine();
  6.             answer = answer.ToLower();
  7.             if ("yes" == answer || "no" == answer)
  8.             {
  9.                 if ("yes" == answer)
  10.                     Console.WriteLine("放学吧");
  11.                 else
  12.                     Console.WriteLine("做完再放学");
  13.             }
  14.             else
  15.                 Console.WriteLine("请回答 Yer or No");
  16.             Console.ReadKey();
  17.         }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
?﹪滾妳媽丶 发表于 2014-3-6 10:44
我也是初学者,你要的是不是这种效果?  
你的错误我只能看懂一点,你先定义了两个变量存y和n 然后又用这两 ...

can.ToLower 字符串转换为小写
回复 使用道具 举报
你这个是逻辑问题。
因为你初始化的yes和can是y和n。
到这句while (can.ToLower() == "n" && i < 10),can是n进去一次,输入n继续循环。
但你一输入其他字符就会不成立,然后接着执行 while (yes.ToLower() == "y")的循环。因为yes是初始化的是y所以进去一次显示“放学吧”,你输入y继续循环,输入其他字符不成立,然后程序就结束了。所以是你的循环逻辑写错了。

评分

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

查看全部评分

回复 使用道具 举报
你这段代码语法没有错,就是不太符合逻辑。
只需要一个循环就够了。
            int i = 0;
            bool flag=false;
            while (flag == false&& i < 10)
           {
               
                Console.WriteLine("同学们这道题你们会了吗");

                 string input = Console.ReadLine();

                if (input == "n")
                {
                    flag = false;
                    i++;
                }
                else if (input == "y")
                {
                    flag = true;
                    Console.WriteLine("可以放学了!");
                }
                else
                {
                    Console.WriteLine("输入有误,只能输入n/y!");
                flag = false;
                }              
            }

            Console.ReadKey();
回复 使用道具 举报
好久没练了   感觉生疏了

  1. int i = 0;//记录学生做题的次数

  2.             string str = null;//接受学生输入的字符串

  3.             bool flag = false;


  4.             do
  5.             {
  6.      Console.WriteLine("同学们请问这道题会做了吗?( yes\\no)");
  7.      str = Console.ReadLine().ToLower();//将学生输入的字符串转换为小写
  8.      if (str != "yes" && str != "no")
  9.      {
  10.         Console.WriteLine("对不起!输入有误 只能输入yes or  no \n");
  11.         flag = true;
  12.      }
  13.      else if (str == "no")
  14.      {
  15.         Console.WriteLine("不会呀~~那就等写会了再放学吧\n");
  16.         i++;
  17.      }
  18.      else
  19.      {
  20.         Console.WriteLine("你真会啦   你写了{0}遍 要写10遍噢\n ", i+1);
  21.         i++;
  22.         flag = true;
  23.      }

  24.      } while (flag && i<10);

  25.         Console.WriteLine("放学吧");
复制代码



回复 使用道具 举报
怎么感觉你这种逻辑很怪,试一下这个怎么样?呵呵,在网吧手写的,没运行。
static void Main(string[] args)
        {
               bool flag=true;
              int num=0;//判断输入的次数
               while(flag )
              {
                      Console.WriteLine("同学们这道题你们会了吗?输入(Y/N)");
                      string str=Console.ReadLine();

                       if(str=="Y")
                         {
                              Consoel.WriteLine("放学了!");
                              flag=faule;
                         }
                         else if(str=="N")
                         {
                              Console.WriteLine("同学们这道题你们会了吗?");
                               str=Console.ReadLine();
                               num++;
                               continue;
                         }
                         else
                         {
                              Console.WriteLine("输入的格式不对,请输入(Y/N)");
                               num++;
                               continue;
                         }
                         if(num>10)
                         {
                                 Console.WriteLine("抱歉,输入的次数超过十次了!");
                                 break;
                         }
              }
        }

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1 小飞侠加油。。

查看全部评分

回复 使用道具 举报
?﹪滾妳媽丶 发表于 2014-3-6 10:44
我也是初学者,你要的是不是这种效果?  
你的错误我只能看懂一点,你先定义了两个变量存y和n 然后又用这两 ...

那是转小写的一个函数
回复 使用道具 举报
要限制控制台只能输入y和n哪你要在
input =console.readline();
之后对输入的input 字符串进行判断
while(true)
{
if(input.ToLower()=="y" || input.ToLower()=="n")
{
//如果是y或者n就进行你学要的操作
。。。
}
else
{
//如果不是y或者n那就继续从控制台接收字符串
input=console.ReadLine();
}
}


//****************************************************


或者使用contains语句也可以
string[] strs=new string[]{ "y","n","Y","N"}

//如果input 不在strs的数组中那么就继续接收
while( !strs.contains(input) )
{
input=console.ReadLine();
}

评分

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

查看全部评分

回复 使用道具 举报
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace test1
{
    class Program
    {
        /*
         *
1、 老师问学生,这道题你会做了吗?如果学生答"会了(y)",则可以放学.如果学生不会做(n),则老
    师再讲一遍,再问学生是否会做了......
   
    直到学生会为止,才可以放学.

    直到学生会或老师给他讲了10遍还不会,都要放学
         */
        static void Main(string[] args)
        {
            int i = 0;//记录学生说不会做的次数
            while (i < 10)//当学生不会次数小于10老师接着教
            {
                Console.Write("老师问学生,这道题你会做了吗?学生答:");
                if (Console.ReadLine() == "y") // 学生若回答y,则跳出整个循环,打印“老师说放学!”
                {
                    break;
                }
                else if (Console.ReadLine() == "n")//学生若回答n,则老师继续教学,continue跳出本次循环
                {
                    continue;
                }
                i++; //记录学生说 n 的次数
                Console.WriteLine("学生说了 n 的次数:" + i.ToString());
            }
            Console.WriteLine("老师说放学!");
            Console.ReadKey();

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