黑马程序员技术交流社区

标题: 求解决 enum 输入数字 怎么办 [打印本页]

作者: 黑色L    时间: 2013-10-1 16:23
标题: 求解决 enum 输入数字 怎么办
本帖最后由 黑色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();
        }
    }
}



作者: 黑色L    时间: 2013-10-1 16:28
运行

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

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


作者: 王志远    时间: 2013-10-1 22:54
本帖最后由 王志远 于 2013-10-1 23:15 编辑

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


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

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

作者: 黄广祯    时间: 2013-10-1 23:35
Console.WriteLine("0代表男,1代表女");
onePerson.sex =(Gender) Convert.ToInt32(Console.ReadLine());

希望能帮到你。。。
作者: 黑色海    时间: 2013-10-2 08:56
本帖最后由 黑色海 于 2013-10-2 08:57 编辑

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

}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2