黑马程序员技术交流社区
标题: 关于属性验证问题? [打印本页]
作者: 邓建军 时间: 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 编辑
- public class Student {
- String name;
- int age;
- String ID;
- String tel;
- public static boolean Check(String str) { //定义一个检测学号和手机号码格式的方法在设置属性的时候调用
- for (int i = 0; i < str.length(); i++) {
- if ((int) str.charAt(i) < 48 || (int) str.charAt(i) > 57) //检测单个字符是否是数字
- return false;
- }
- return true;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- if (name.length() >= 2) {
- this.name = name;
- } else {
- this.name = "无名";
- }
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- if (age >= 0 && age <= 100) {
- this.age = age;
- } else {
- this.age = 18;
- }
- }
- public String getID() {
- return ID;
- }
- public void setID(String id) {
- if (Check(id) && id.length() == 10) { //检测学号
- ID = id;
- } else {
- ID = "0000000000";//设置默认学号
- }
- }
- public String getTel() {
- return tel;
- }
- public void setTel(String tel) {
- if (Check(tel) && tel.length() == 11) { //检测手机号码是否符合格式
- this.tel = tel;
- } else {
- this.tel = "00000000000"; //设置默认手机号
- }
- }
- @Override
- public String toString() {
- // TODO Auto-generated method stub
- return "姓名:" + name + "\n年龄:" + age + "\n学号:" + ID + "\n手机号:" + tel
- + "\n";
- }
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Student s1 = new Student();
- s1.setName("王小五");
- s1.setAge(22);
- s1.setID("2010410102");
- s1.setTel("18766500050");
- System.out.println(s1.toString());
- }
- }
复制代码 设置城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
- <P> static void Main(string[] args)
- {
- Student student = new Student();
- student.Name = "";
- student.Age = 12;
- student.Tel = "aa";
- student.StudentId = "0987";
- student.Show();
- Console.ReadKey();
- }
- }
- class Student
- {
- string name;</P>
- <P> public string Name
- {
- get { return this.name; }
- set
- {
- if (value.Length < 2)
- { this.name = "无名"; }
- else
- { this.name = value; }
- }
- }
- int age;</P>
- <P> public int Age
- {
- get { return this.age; }
- set
- {
- if (value >= 0 && value <= 100)
- { this.age = value; }
- else
- { this.age = 18; }
- }
- }
- string tel;</P>
- <P> public string Tel
- {
- get { return this.tel; }
- set
- {
- if (Check(value) && value.Length == 11)
- { this.tel = value; }
- else
- { this.tel = "00000000000"; }
- }
- }
- string studentId;</P>
- <P> public string StudentId
- {
- get { return studentId; }
- set
- {
- if (Check(value) && value.Length == 10)
- { this.studentId = value; }
- else
- { this.studentId = "0000000000"; }
- }
- }
- bool Check(string str) //检查手机号和学号的方法
- {
- bool flag=true;
- for (int i = 0; i < str.Length; i++)
- {
- if (str[i] < 48 || str[i] > 57)
- { flag = false; }
- }
- return flag;
- }
- public void Show()
- {
- Console.WriteLine("name={0},age={1},tel={2},studentId={3}", name, age, tel, studentId);
- }
- }
- </P>
复制代码 因为学号、手机号都不用进行数学运算,只是以数字形式表示,所以应设为string类型
注意,验证学号、手机号时不要转为int类型,已经超范围了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |