| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 774 人关注过本帖
标题:关于do while循环的问题 望高手详解!
只看楼主 加入收藏
qq229943249
Rank: 2
等 级:论坛游民
帖 子:19
专家分:21
注 册:2012-11-6
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:10 
关于do while循环的问题 望高手详解!
程序代码:
//输入若干个学员姓名和5门课的成绩 输出平均成绩 并选择是否继续输入

            double veg = 0;
            int sum = 0;
            string name;
            char x;
            do
            {
                Console.Write("输入学生姓名:");
                name=Console.ReadLine();
                for (int i = 1; i <= 5;i++ )
                {
                    Console.Write("请输入第{0}门课的成绩:",i);
                    int s = int.Parse(Console.ReadLine());
                    sum += s;
                }
                veg = sum / 5;
                Console.WriteLine("{0}的五门课平均成绩是:{1}",name,veg);
                Console.WriteLine("是否继续输入(是-y  否-n)");
                x = (char)(Console.Read());
            }
            while(x.Equals('y'));
            Console.ReadKey();
当我输入完第一个学员时,输出没有问题  但当我选择y(继续输入)时,do循环将“输入学员姓名”和“输入成绩”同时输出了 没有给我输入学员姓名的空间 请问这是怎么回事呢?忘高手详细指点!
搜索更多相关主题的帖子: color 
2012-11-16 23:04
qq229943249
Rank: 2
等 级:论坛游民
帖 子:19
专家分:21
注 册:2012-11-6
收藏
得分:0 
回复 楼主 qq229943249
我自己发现了 定义name sum 和veg 必须要在do循环内 否则会进行累加
可为什么会跳过name的输入这一步 真心不知道 刚才把char类型的x改为了string类型的 发现这个问题没有了 望高手指点!
2012-11-16 23:53
qq229943249
Rank: 2
等 级:论坛游民
帖 子:19
专家分:21
注 册:2012-11-6
收藏
得分:0 
没有高手指点下么!!!!
2012-11-17 20:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你跟踪一次不就知道了么

授人以渔,不授人以鱼。
2012-11-18 00:15
qq229943249
Rank: 2
等 级:论坛游民
帖 子:19
专家分:21
注 册:2012-11-6
收藏
得分:0 
跟踪了 结果还是直接跳转到了输入成绩 略去了输入姓名 我觉得应该是自己对do while循环还理解的不深 所以请教高人啊!!!!救死扶伤啊!!!!!
2012-11-18 14:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你是不是键入y之后敲了一下回车?

授人以渔,不授人以鱼。
2012-11-18 14:23
qq229943249
Rank: 2
等 级:论坛游民
帖 子:19
专家分:21
注 册:2012-11-6
收藏
得分:0 
回复 5楼 qq229943249
是呀 !问题在这里吗?
2012-11-18 14:39
TWO2LIFE
Rank: 2
等 级:论坛游民
帖 子:7
专家分:19
注 册:2012-5-3
收藏
得分:0 
你去了解一下Console.Read()与Console.ReadLine()关系:
修改代码如下:
     string x;
            do
            {
                double veg = 0;
                int sum = 0;
                string name = string.Empty;
                Console.Write("输入学生姓名:");
                name = Console.ReadLine();
                for (int i = 1; i <= 5; i++)
                {
                    Console.Write("请输入第{0}门课的成绩:", i);
                    int s = int.Parse(Console.ReadLine());
                    if (0 == s)
                    {
                        Console.WriteLine("你输入的成绩不是数字!");
                    }
                    sum += s;
                }
                veg = sum / 5;
                Console.WriteLine("{0}的五门课平均成绩是:{1}", name, veg);
                Console.WriteLine("是否继续输入(是-y  否-n)");
                x = Console.ReadLine();
            }
            while (x.Equals("y"));
            //Console.ReadKey();
2012-11-18 14:52
TWO2LIFE
Rank: 2
等 级:论坛游民
帖 子:7
专家分:19
注 册:2012-5-3
收藏
得分:6 
你去了解一下Console.Read()与Console.ReadLine()关系:
修改代码如下:
     string x;
            do
            {
                double veg = 0;
                int sum = 0;
                string name = string.Empty;
                Console.Write("输入学生姓名:");
                name = Console.ReadLine();
                for (int i = 1; i <= 5; i++)
                {
                    Console.Write("请输入第{0}门课的成绩:", i);
                    int s = int.Parse(Console.ReadLine());
                    if (0 == s)
                    {
                        Console.WriteLine("你输入的成绩不是数字!");
                    }
                    sum += s;
                }
                veg = sum / 5;
                Console.WriteLine("{0}的五门课平均成绩是:{1}", name, veg);
                Console.WriteLine("是否继续输入(是-y  否-n)");
                x = Console.ReadLine();
            }
            while (x.Equals("y"));
            //Console.ReadKey();
2012-11-18 14:52
zwffff
Rank: 4
等 级:业余侠客
威 望:1
帖 子:58
专家分:224
注 册:2007-11-13
收藏
得分:4 
改成9楼那样就可以了,因为你之前的写法,如果你输入y并按回车的话,
第一次Console.Read()会读取一个字符,也就是y,然后回车会自动被name=Console.ReadLine()处理。也就是name会得到一个空字符串。

[ 本帖最后由 zwffff 于 2012-11-18 15:01 编辑 ]

欢迎加入.Net技术交流群:90925122
2012-11-18 14:56
快速回复:关于do while循环的问题 望高手详解!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017887 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved