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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑色L 中级黑马   /  2013-10-1 16:23  /  1429 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑色L 于 2013-10-2 00:39 编辑

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _30结构
{
    /// <summary>
    /// 定义一个枚举 Gender
    /// </summary>
    enum Gender { 男, 女 };
    /// <summary>
    /// 定义一个结构 Person
    /// </summary>
    struct Person
    {
        public string name;
        public Gender sex;
        public int age;
    }
    class Program
    {
        static void Main(string[] args)
        {
            Person onePerson;  //声明
            Console.WriteLine("请输入姓名");
            onePerson.name = Console.ReadLine();
            Console.WriteLine("请输入性别");
            do
            {
                try
                {
                    onePerson.sex = (Gender)Enum.Parse(typeof(Gender), (Console.ReadLine())); //转换输入的,输入性别
                    break;
                }
                catch
                {
                    Console.WriteLine("\n性别只能输入 男 或 女 \n请重新输入"); // 错误提示
                }
            } while (true);

            Console.WriteLine("请输入年龄");
            do
            {
                try
                {
                    onePerson.age = Convert.ToInt32(Console.ReadLine()); //转换年龄
                    if (!(onePerson.age < 0 || onePerson.age > 100))
                    {
                        break;
                    }
                    else
                    {
                        Console.WriteLine("\n年龄在(0到100)之间\n请重新输入"); //错误提示
                    }
                }
                catch
                {
                    Console.WriteLine("\n你输入的不是数字\n请重新输入");  //错误提示
                }
            } while (true);
            Console.WriteLine("你的姓名是:{0}\n性别是:{1}\n年龄是:{2}", onePerson.name, onePerson.sex, onePerson.age); //打印输出
            Console.ReadKey();
        }
    }
}


评分

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

查看全部评分

4 个回复

倒序浏览
运行

请输入姓名
张三
请输入性别
456
请输入年龄
20

输出
你的姓名是:张三
性别是:456
年龄是:20

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 王志远 于 2013-10-1 23:15 编辑

你这应该是do-while循环的问题,它是先执行一遍do再判断循环条件,你把do-while直接换成while(true)就可以了!


不好意思,弄错了跟循环没关系,I'm So sorry!!!!!!!

你定义的枚举enum Gender { 男, 女 };里面下标默认为0和1两个,所以输入时必须是0或者1,
如果是不是0和1则输出你输入的值

评分

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

查看全部评分

回复 使用道具 举报
Console.WriteLine("0代表男,1代表女");
onePerson.sex =(Gender) Convert.ToInt32(Console.ReadLine());

希望能帮到你。。。

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 黑色海 于 2013-10-2 08:57 编辑

转换性别时加入判断
if(oneperson.sex==Gender.男||oneperson.sex==Gender.女)
{
break;
}
else
{
   Console.WriteLine("\n性别只能输入 男 或 女 \n请重新输入");  //错误提示

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