黑马程序员技术交流社区

标题: 关于属性验证问题? [打印本页]

作者: 邓建军    时间: 2013-4-16 20:12
标题: 关于属性验证问题?
本帖最后由 邓建军 于 2013-4-18 09:04 编辑

定义1个学生类,有姓名、年龄、手机号码、学号四个属性,要求学生的姓名不能为空串,并且长度不能下于2,否则使其默认值为”无名”, 年龄只能在0-100之间,否则默认值为18,手机号码只能为11位的数字学号要求为10个数字,否则赋值为默认值”0000000000”.手机号跟学号定义成什么类型好,该怎么验证属性?


作者: 王永贺    时间: 2013-4-16 21:42
本帖最后由 王永贺 于 2013-4-16 21:43 编辑

  1. public class Student {

  2.         String name;
  3.         int age;
  4.         String ID;
  5.         String tel;

  6.         public static boolean Check(String str) { //定义一个检测学号和手机号码格式的方法在设置属性的时候调用
  7.                 for (int i = 0; i < str.length(); i++) {
  8.                         if ((int) str.charAt(i) < 48 || (int) str.charAt(i) > 57)  //检测单个字符是否是数字
  9.                                 return false;
  10.                 }

  11.                 return true;
  12.         }

  13.         public String getName() {
  14.                 return name;
  15.         }

  16.         public void setName(String name) {
  17.                 if (name.length() >= 2) {
  18.                         this.name = name;
  19.                 } else {
  20.                         this.name = "无名";
  21.                 }
  22.         }

  23.         public int getAge() {
  24.                 return age;
  25.         }

  26.         public void setAge(int age) {
  27.                 if (age >= 0 && age <= 100) {
  28.                         this.age = age;
  29.                 } else {
  30.                         this.age = 18;
  31.                 }
  32.         }

  33.         public String getID() {
  34.                 return ID;
  35.         }

  36.         public void setID(String id) {
  37.                 if (Check(id) && id.length() == 10) { //检测学号
  38.                         ID = id;
  39.                 } else {
  40.                         ID = "0000000000";//设置默认学号
  41.                 }
  42.         }

  43.         public String getTel() {
  44.                 return tel;
  45.         }

  46.         public void setTel(String tel) {
  47.                 if (Check(tel) && tel.length() == 11) { //检测手机号码是否符合格式
  48.                         this.tel = tel;
  49.                 } else {
  50.                         this.tel = "00000000000"; //设置默认手机号
  51.                 }

  52.         }

  53.         @Override
  54.         public String toString() {
  55.                 // TODO Auto-generated method stub
  56.                 return "姓名:" + name + "\n年龄:" + age + "\n学号:" + ID + "\n手机号:" + tel
  57.                                 + "\n";
  58.         }

  59.         public static void main(String[] args) {
  60.                 // TODO Auto-generated method stub
  61.                 Student s1 = new Student();
  62.                 s1.setName("王小五");
  63.                 s1.setAge(22);
  64.                 s1.setID("2010410102");
  65.                 s1.setTel("18766500050");
  66.                 System.out.println(s1.toString());
  67.         }

  68. }
复制代码
设置城string 利用自定义方法验证

作者: 邓建军    时间: 2013-4-16 22:17
王永贺 发表于 2013-4-16 21:42
设置城string 利用自定义方法验证

谢谢,你用JAVA写的,跟.Net不一样
作者: 陈帅    时间: 2013-4-16 22:22
其实我觉得简单点可以都设置成string的,然后强制Convert一下,Convert.ToInt32,如果能转换,就说明都是数字~用下try-catch
作者: 陈帅    时间: 2013-4-16 22:23
当然用正则表达式判断,应该也是可以的
作者: 熊薇    时间: 2013-4-16 23:00

  1. <P> static void Main(string[] args)
  2.         {
  3.             Student student = new Student();
  4.             student.Name = "";
  5.             student.Age = 12;
  6.             student.Tel = "aa";
  7.             student.StudentId = "0987";
  8.             student.Show();
  9.             Console.ReadKey();            
  10.         }      
  11.     }
  12.     class Student
  13.     {
  14.         string name;</P>
  15. <P>        public string Name
  16.         {
  17.             get { return this.name; }
  18.             set
  19.             {
  20.                 if (value.Length < 2)
  21.                 { this.name = "无名"; }  
  22.                 else
  23.                 { this.name = value; }
  24.             }
  25.         }
  26.         int age;</P>
  27. <P>        public int Age
  28.         {
  29.             get { return this.age; }
  30.             set
  31.             {
  32.                 if (value >= 0 && value <= 100)
  33.                 { this.age = value; }
  34.                 else
  35.                 { this.age = 18; }
  36.             }
  37.         }
  38.         string tel;</P>
  39. <P>        public string Tel
  40.         {
  41.             get { return this.tel; }
  42.             set
  43.             {
  44.                 if (Check(value) && value.Length == 11)
  45.                 { this.tel = value; }
  46.                 else
  47.                 { this.tel = "00000000000"; }
  48.              }
  49.         }
  50.         string studentId;</P>
  51. <P>        public string StudentId
  52.         {
  53.             get { return studentId; }
  54.             set
  55.             {
  56.                 if (Check(value) && value.Length == 10)
  57.                 { this.studentId = value; }
  58.                 else
  59.                 { this.studentId = "0000000000"; }
  60.             }
  61.         }
  62.      bool Check(string str) //检查手机号和学号的方法
  63.      {
  64.          bool flag=true;
  65.          for (int i = 0; i < str.Length; i++)
  66.          {
  67.              if (str[i] < 48 || str[i] > 57)
  68.              { flag = false; }
  69.          }
  70.          return flag;
  71.      }
  72.      public void Show()
  73.      {
  74.          Console.WriteLine("name={0},age={1},tel={2},studentId={3}", name, age, tel, studentId);
  75.      }
  76.     }
  77. </P>
复制代码
因为学号、手机号都不用进行数学运算,只是以数字形式表示,所以应设为string类型
注意,验证学号、手机号时不要转为int类型,已经超范围了





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