首页 新闻 会员 周边

c#控制台应用问题,迷惑

0
悬赏园豆:5 [已解决问题] 解决于 2012-04-21 07:35

class Program
    {
        static void Main(string[] args)
        {
            Console.Title = "Console.Read方法应用示例";
            string str = "";
            char ch = '1';
            Console.Write("请输入一个字符串(Enter=完成,X=退出):");
            while(true)
            {
                ch = (char)Console.Read();
                str += ch;
                if(ch == 'x' || ch == 'X')return;    
                //else        
                //break;   把下面的if注释掉,用上面两条已注释的。只会输出输入的头一个字符。
                if (ch == '\n') break;  按这条,输入的内容会全部输出。
            }
            Console.WriteLine("您输入的字符串是:{0}",str);
            Console.ReadKey();
        }

str += ch; 的赋值操作同样在先一步已完成。为什么结果会是两样的。求解!

问题补充:

if (ch == '\n') break;退出 与else break;退出  只是退出条件不同。结果却有很大区别

keyen的主页 keyen | 初学一级 | 园豆:135
提问于:2012-04-20 15:29
< >
分享
最佳答案
1

你的

if (ch =='z' || ch=='Z') return;
else         
    break;  
这个语句貌似无论输入什么都是退出   那个ch读取到第一个值 程序就结束了 str自然也值等于第一个值。所以输出的只有一位数

而如果是下面那个if的话   只要你输入的不是r或\n   while循环就为true  循环继续  str就能累加了  输出的就是你输入的所有的字符

收获园豆:5
痴迷浪子 | 菜鸟二级 |园豆:207 | 2012-04-20 17:38
其他回答(1)
1
请重新学习while循环。楼主。
if(ch == 'x' || ch == 'X') return; else break; 这不是很明显么,这个IF语句的意思是如果输入了x或者X就退出,否则也退出,所以,就只有第一个字符啊
Peter.Xu | 园豆:13 (初学一级) | 2012-04-20 15:46

而后面那个 if (ch == '\n') break; 是说,只有当你的输入是回车的时候才退出循环。

支持(0) 反对(0) Peter.Xu | 园豆:13 (初学一级) | 2012-04-20 15:50
请重新学习while循环。
支持(0) 反对(0) Peter.Xu | 园豆:13 (初学一级) | 2012-04-20 17:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册