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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ↖落葉下♀媃媚 中级黑马   /  2013-3-28 18:50  /  1736 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. int i = 0;
  2.             
  3.                 Console.WriteLine("这道题你会做了吗?(y/n)");
  4.              string   answer = Console.ReadLine();
  5.                 while(answer=="n" || i<10)//当回答为n时或者小于十遍就进行while循环
  6.                 {
  7.                     Console.WriteLine("老师讲一遍题");
  8.                     i++;
  9.                     Console.WriteLine("这道题你会做了吗?(y/n)");
  10.                     answer = Console.ReadLine();
  11.                   
  12.                     
  13.                 }
  14.                
  15.             
  16.             Console.WriteLine("可以放学了");
  17.             Console.ReadKey();
复制代码
是不是我程序出问题了,怎么一直出现再讲一遍?我认为我的代码没问题啊!!!

评分

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

查看全部评分

8 个回复

倒序浏览
while里面的条件应该是(answer=="n"&&i<10)吧,因为只要是讲了10遍,不管懂不懂都放学了,如果用“||”就表示两个条件只要有一个为真这个表达式就为真,就是说不管老师讲了多少遍,只要学生不懂都要还要再将一遍!你试试看

评分

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

查看全部评分

回复 使用道具 举报
Console.WriteLine("这道题你会做了吗?(y/n)");
             string   answer = Console.ReadLine();
                while(answer=="n" || i<10)//很明显这里错了,把||改成&&就行了当answer="y"时, || i<10这条件个成立,一真为真,所以会执行while
                {
                    Console.WriteLine("老师讲一遍题");
                    i++;
                    Console.WriteLine("这道题你会做了吗?(y/n)");
                    answer = Console.ReadLine();
                }
遇到不是自己想要的结果,可以自己打断点,然后按F11一步一步执行,很快就能找到错误的原因。

评分

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

查看全部评分

回复 使用道具 举报
while(answer=="n" || i<10)这个地方逻辑运算符用错啦,应该是并且的关系,用&&这个逻辑运算符。。

评分

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

查看全部评分

回复 使用道具 举报
你可以想一下, 如果这里while(answer=="n" || i<10)用“||”运算符的话,当输入“y”时,也符合"i<10"的条件时,同样会执行循环,所以这里用的运算符应该是"&&"运算符
回复 使用道具 举报
int i = 0;
            
                Console.WriteLine("这道题你会做了吗?(y/n)");
             string   answer = Console.ReadLine();
                while(answer=="n" || i<10)//当回答为n时或者小于十遍就进行while循环
                {
                    Console.WriteLine("老师讲一遍题");
                    i++;
                    Console.WriteLine("这道题你会做了吗?(y/n)");
                    answer = Console.ReadLine();
                  
                    
                }
               
            
            Console.WriteLine("可以放学了");
            Console.ReadKey();
首先你的逻辑关系表达式用错了 (answer=="n" || i<10 ) ||是或的意思,总一个会成立 ,你不会输入n 程序也会默认i<10成立 还自动进入循环10遍
所以你把||改成 && “与”逻辑关系就可以了 同时成立 就不会了

评分

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

查看全部评分

回复 使用道具 举报
苏冉 中级黑马 2013-3-28 19:31:01
7#
你的程序里面有死循环,可自查出来
回复 使用道具 举报
楼主我的真的佩服你,虽然我是一个java初学者 ,但是你的whie()里面的"||"改成“&&”就不会死循环。"||"这个是说,只要左右两边有一个满足条件,就会执行while()循环,而用"&&"s是左右两边都要满足,才能执行while()循环。希望你对有帮助。其实我是捞技术分的。
回复 使用道具 举报
本帖最后由 HM邱刚权 于 2013-3-29 15:30 编辑

      推荐你个更简单的方法哦!
        for (int i = 0; i <= 9; i++)//循环10次
            {     
                Console.WriteLine("道题你会做了吗?");
                string answer = Console.ReadLine();//接受学生的回答
                if (answer == "y")//回答Y即可跳出此次循环否则循环10次自动关闭循环
                {
                    break;
                }
            }
            Console.WriteLine("你可以放学了");
            Console.ReadKey();
   
      首先你要搞懂他的条件是或者就用||并且的话就用&&  所以写这种循环这容易发生错误的就是这个地方!所以你可以跟我一样 直接循环10次
  然后在里面进行判断!回答Y就跳出!否则10次后自己跳出!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马