黑马程序员技术交流社区
标题:
求解决 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