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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 邵震 于 2013-4-13 17:06 编辑

要求:
现有学生5名
老邵  身份证号  152 127 1989 1005 4350  喝酒      不抽烟   距离北京1962KM  
老刘  身份证号  341 222 1991 1226 6570  喝酒      抽烟      距离北京1109KM
老葛  身份证号  341 222 1989 0817 6310  不喝酒   抽烟      距离北京1127KM
清新  身份证号  111 111 1991 0413 5420  不喝酒   不抽烟  距离北京   698KM
某某  身份证号  152 127 1992 0724 6580  喝酒      不抽烟  距离北京       0KM
(女士的生日是假的,别乱想了。某某人在北京所以没有距离)
假设火车以每小时110KM的速度前进(不算停车时间,一直跑到北京,黑马专用线,嘿嘿)

求结果
1,一共有几名男学员几名女学员(身份证第十七位是单数的是汉子双数的是妹子)
2,每个学员自保家门 姓名 年龄  性别  从出生到2013年04月12日一共过了多少天(注意闰年) 是否抽烟喝酒  早上七点出发到北京一共用了多少时间,几点到的
3,按年龄从小到大排序打印名字。
4,谁和谁是老乡
5,谁和谁同龄


不许用超过视频第8天的代码 实在不会的可以自己适量增减条件
尽量能把前八天所学的东西全用上
弄这个题只为把自己学的东西复习一遍 不要怕麻烦 先把咱学到的能用上的全用上 然后再精简 这样也是一种学习的过程啊



问题就是这样 大家有什么想法可以自己加上去

不是什么高深的问题就是在一个问题里问了很多平时的小问题  

性别要判断单双 老乡要判断是否一样 还要提取字符串

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

11 个回复

倒序浏览
话说  这个题我自己都要做好久。。。。。
回复 使用道具 举报
本帖最后由 陈圳 于 2013-4-13 10:58 编辑
  1.         public static void main(String[] args) {
  2.                 // TODO Auto-generated method stub
  3.                 TreeSet<ItStudent> itcast=new TreeSet<ItStudent>(new compara());
  4.                 //(String name,String id,String hobby,String unHobby,int distance)
  5.                 itcast.add(new ItStudent("老邵","152127198910054350","喝酒","不抽烟",1962));  
  6.                 itcast.add(new ItStudent("老刘","341222199112266570","喝酒","抽烟",1109));
  7.                 itcast.add(new ItStudent("老葛","341222198908176310","不喝酒","抽烟",1127));
  8.                 itcast.add(new ItStudent("清新她妹","111111199104135420","不喝酒","不抽烟",698));
  9.                 itcast.add(new ItStudent("某某","152127199207246580","喝酒","不抽烟",0));
  10.                 for(Iterator<ItStudent> in=itcast.iterator();in.hasNext();){
  11.                         ItStudent stu=in.next();
  12.                         System.out.println(stu);
  13.                 }
  14.         }

  15. }
  16. class compara implements Comparator<ItStudent>{
  17.         @Override
  18.         public int compare(ItStudent o1, ItStudent o2) {
  19.                 int age=o2.getAge()-o1.getAge();
  20.                 if(age==0)
  21.                         return o2.getName().compareTo(o1.getName());
  22.                 else return age;
  23.         }
  24. }
  25. class ItStudent{
  26.         private String name;
  27.         private String countryMen=null;//老乡;
  28.         private String sameMen=null;//同龄;
  29.         private String id;
  30.         private String hobby;
  31.         private String unHobby;
  32.         private int distance;
  33.         private int nowYear=Calendar.getInstance().get(Calendar.YEAR);//在这与的过程中看到经常用这个,就写在这里.
  34.         //然后可以用2013代替,其他的日期也一样,但是不利于维护了.
  35.         public ItStudent(String name,String id,String hobby,String unHobby,int distance){//构造器
  36.                 this.name=name;
  37.                 this.id=id;
  38.                 this.hobby=hobby;
  39.                 this.unHobby=unHobby;
  40.                 this.distance=distance;
  41.         }
  42.         public String getSex(){//返回性别
  43.                 if(this.id.charAt(16)%2!=0)
  44.                         return "男";
  45.                 else return "女";
  46.         }
  47.         public int getAge(){//返回年龄
  48.                 return Integer.parseInt(this.id.substring(6,10));
  49.         }
  50.         public String getName() {
  51.                 return name;
  52.         }
  53.         private int getDays(){//这个人活了多少天;
  54.                 int sumDays=0;
  55.                 int birthYear=getAge();
  56.                 int birthMouths=Integer.parseInt(this.id.substring(11,13));
  57.                 int birthDays=Integer.parseInt(this.id.substring(13,15));
  58.                 int nowYear=this.nowYear;
  59.                 int nowMouths=Calendar.getInstance().get(Calendar.MONTH)+1;
  60.                 int nowDays=Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
  61.                 sumDays+=getDays(birthYear,birthMouths)+getDays(nowYear,nowMouths)+nowDays-birthDays;//获得这出生日和今年己过的天数
  62.                 sumDays+=leapYearCount()*366+(this.nowYear-this.getAge()+leapYearCount())*355;
  63.                 return sumDays;
  64.         }
  65.         public int getDays(int year,int month){//获取给定日期的距离年过了多久.
  66.                 boolean isLeap=this.isLeapYear(year);
  67.                 int sumDays=0;
  68.                 while(month-->=0){
  69.                         switch(year){
  70.                                 case 1:case 3:case 5:case 7:case 8:case 10:case 12:
  71.                                         sumDays+=31;break;
  72.                                 case 4:case 6:case 9:case 11:
  73.                                         sumDays+=30;break;
  74.                         }
  75.                 }
  76.                 if(isLeap)
  77.                         return sumDays+=29;
  78.                 else return sumDays+=28;
  79.         }
  80.         private int leapYearCount(){
  81.                 int count=0;//计算活着闰年的次数
  82.                 int year=this.nowYear;
  83.                 int length=year-this.getAge();
  84.                 for(int i=getAge()+1;i<length;i++){
  85.                         if(this.isLeapYear(i))
  86.                                 count++;
  87.                 }
  88.                 return count;
  89.         }
  90.         private boolean isLeapYear(int year){
  91.                 if(year%4==0&&year%100!=0||year%100==0&&year%400==0)
  92.                         return true;
  93.                 else return false;
  94.         }
  95.         //设置老乡;
  96.         //private String countryMen="";//老乡;
  97.         //private String sameMen;//同龄;
  98.         //设置同年龄:
  99.         //可以用蛮力求解.但是数据多了程序就完了,所以我就不写了.等我想出了效率高的再加上
  100.         @Override
  101.         public int hashCode(){
  102.                 System.out.println("name="+this.name);
  103.                 return 1;
  104.         }
  105.         public String toString(){//姓名 年龄  性别  从出生
  106.                 StringBuilder msg=new StringBuilder();
  107.                 msg.append("我叫:"+name+" 年龄:"+this.getAge()+" 性别:"+getSex()+" 我一共活了:"+getDays()+"天");
  108.                 if(this.countryMen!=null)
  109.                         msg.append("我的老乡是:"+this.countryMen);
  110.                 if(this.sameMen!=null)
  111.                         msg.append("与我同龄的娃是:"+this.sameMen);
  112.                 return msg.toString();
  113.         }
  114. }
复制代码
就做到这里了.关于计算活了多少天的算法是没错,但是我的计算方式估计有错.就不改了.后面俩个问题,考虑到效率,我写不写了.暴力循环求解和不写差不多.数据多了,就显得无力了.
回复 使用道具 举报
楼上真乃高人。。!
回复 使用道具 举报
搞定了··三个类·
回复 使用道具 举报
  1. package result;

  2. public class PersonMessage {
  3.         private String name;
  4.         private String ic; //Identity card
  5.         private boolean drink;
  6.         private boolean somker;
  7.         private double distance;
  8.         public PersonMessage(String name, String ic, boolean drink, boolean somker, double distance) {
  9.                 this.distance = distance;
  10.                 this.name = name;
  11.                 this.ic = ic;
  12.                 this.drink = drink;
  13.                 this.somker = somker;
  14.         }
  15.         public double getDistance() {
  16.                 return distance;
  17.         }
  18.         public void setDistance(double distance) {
  19.                 this.distance = distance;
  20.         }
  21.         public String getName() {
  22.                 return name;
  23.         }
  24.         public void setName(String name) {
  25.                 this.name = name;
  26.         }
  27.         public String getIc() {
  28.                 return ic;
  29.         }
  30.         public void setIc(String ic) {
  31.                 this.ic = ic;
  32.         }
  33.         //喝酒      不抽烟   距离北京1962KM
  34.         public void setDrink(boolean drink) {
  35.                 this.drink = drink;
  36.         }
  37.         public boolean getDrink() {
  38.                 return drink;
  39.         }
  40.         public boolean getSomker() {
  41.                 return somker;
  42.         }
  43.         public void  setSomker(boolean somker) {
  44.                 this.somker = somker;
  45.         }
  46. }
复制代码
回复 使用道具 举报
冯超 高级黑马 2013-4-13 11:21:47
7#
  1. package result;

  2. public class RersonInput {
  3.         public static PersonMessage[] initPerson() {
  4.                 /*老邵  身份证号  152 127 1989 1005 4350  喝酒      不抽烟   距离北京1962KM  
  5.                 老刘  身份证号  341 222 1991 1226 6570  喝酒      抽烟      距离北京1109KM
  6.                 老葛  身份证号  341 222 1989 0817 6310  不喝酒   抽烟      距离北京1127KM
  7.                 清新  身份证号  111 111 1991 0413 5420  不喝酒   不抽烟  距离北京   698KM
  8.                 某某  身份证号  152 127 1992 0724 6580  喝酒      不抽烟  距离北京       0KM
  9.                 */
  10.                 PersonMessage p[] = new PersonMessage[5];
  11.                 p[0] = new PersonMessage("老邵 ","152127198910054350",true,false, 1962d);
  12.                 p[1] = new PersonMessage("老刘 ","341222199112266570",true,true, 1109d);
  13.                 p[2] = new PersonMessage("老葛 ","341222198908176310",false,true, 1127d);
  14.                 p[3] = new PersonMessage("清新 ","111111199104135420",false,false, 698d);
  15.                 p[4] = new PersonMessage("某某 ","152127199207246580",true,false, 0d);
  16.                 return p;
  17.         }
  18. }
复制代码
回复 使用道具 举报
邵震 高级黑马 2013-4-13 11:21:53
8#
张旺达 发表于 2013-4-13 11:08
楼上真乃高人。。!

确实 很厉害
回复 使用道具 举报
冯超 高级黑马 2013-4-13 11:22:02
9#
  1. package result;

  2. public class Question {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                 // 152 127 1989 1005 4350
  9.                 PersonMessage p[] = RersonInput.initPerson();
  10.                 //sexNum(p);
  11. //                PrintByBir(p);;
  12.                 //judgeYear(p);
  13.                 interduce(p);
  14.                 //System.out.println(Integer.valueOf(p[2].getIc().charAt(16) - '0') % 2);
  15.         }
  16.         //1,一共有几名男学员几名女学员(身份证第十七位是单数的是汉子双数的是妹子)
  17.         public static void sexNum(PersonMessage p[]) {
  18.                 int boy = 0; //统计男孩的数目
  19.                 int gril = 0;
  20.                 for(int i = 0; i < p.length; i++) {
  21.                         if(Integer.valueOf(p[i].getIc().charAt(16) - '0') % 2 == 0)
  22.                                 gril++;
  23.                         else
  24.                                 boy++;
  25.                 }
  26.                 System.out.println("boy =" + boy + " and gril =" + gril);
  27.         }
  28.         //3.3,按年龄从小到大排序打印名字。
  29.         public static void PrintByBir(PersonMessage p[]) {
  30.                 //本来想用正则搞,但是依你的要求
  31.                 int year[] = new int[p.length];
  32.                 int month[] = new int[p.length];
  33.                 int day[] = new int[p.length];
  34.                 String names[] = new String[p.length];
  35.                 for(int i = 0; i < p.length; i++) {
  36.                         year[i] = Integer.valueOf(p[i].getIc().substring(6, 10));
  37.                         month[i] = Integer.valueOf(p[i].getIc().substring(10, 12));
  38.                         day[i] = Integer.valueOf(p[i].getIc().substring(12, 14));
  39.                         names[i] = p[i].getName();
  40.                 }
  41.                 //比较 看到了算法
  42.                 String name;
  43.                 int y;
  44.                 for(int i = 0; i < year.length - 1; i++) {
  45.                         for(int j = i+1; j < year.length; j++) {
  46.                                 if(year[i] > year[j]) {
  47.                                         name = names[i];
  48.                                         names[i] = names[j];
  49.                                         names[j] = name;
  50.                                         y = year[i];
  51.                                         year[i] = year[j];
  52.                                         year[j] = y;
  53.                                        
  54.                                         y = month[i];
  55.                                         month[i] = month[j];
  56.                                         month[j] = y;
  57.                                        
  58.                                         y = day[i];
  59.                                         day[i] = day[j];
  60.                                         day[j] = y;
  61.                                         System.out.println(i + " year " + j);
  62.                                         continue;
  63.                                 }
  64.                                 if(year[i] == year[j] && month[i] > month[j]) {
  65.                                         name = names[i];
  66.                                         names[i] = names[j];
  67.                                         names[j] = name;
  68.                                         y = year[i];
  69.                                         year[i] = year[j];
  70.                                         year[j] = y;
  71.                                        
  72.                                         y = month[i];
  73.                                         month[i] = month[j];
  74.                                         month[j] = y;
  75.                                        
  76.                                         y = day[i];
  77.                                         day[i] = day[j];
  78.                                         day[j] = y;
  79.                                         System.out.println(i + " month " + j);
  80.                                         continue;
  81.                                 }
  82.                                 if(year[i] == year[j] && month[i] == month[j] && day[i] >= day[j]) {
  83.                                         name = names[i];
  84.                                         names[i] = names[j];
  85.                                         names[j] = name;
  86.                                         y = year[i];
  87.                                         year[i] = year[j];
  88.                                         year[j] = y;
  89.                                        
  90.                                         y = month[i];
  91.                                         month[i] = month[j];
  92.                                         month[j] = y;
  93.                                        
  94.                                         y = day[i];
  95.                                         day[i] = day[j];
  96.                                         day[j] = y;
  97.                                         System.out.println(i + " day " + j);
  98.                                 }
  99.                         }
  100.                 }

  101.                 for(String s : names) {
  102.                         System.out.println(s);
  103.                 }
  104.         }
  105.         //4谁和谁是老乡 这个我不知道怎么判断
  106.         //5谁和谁同龄
  107.         public static void judgeYear(PersonMessage p[]) {
  108.                 int year[] = new int[p.length];
  109.                 String names[] = new String[p.length];
  110.                 for(int i = 0; i < p.length; i++) {
  111.                         year[i] = Integer.valueOf(p[i].getIc().substring(6, 10));
  112.                         names[i] = p[i].getName();
  113.                 }
  114.                 for(int i = 0; i < year.length; i++) {
  115.                         for(int j = i + 1; j < year.length; j++) {
  116.                                 if(year[i] == year[j]) {
  117.                                         System.out.println(names[i] +"与"+ names[j] + "同年!");
  118.                                 }
  119.                         }
  120.                 }
  121.         }
  122.         //2,每个学员自保家门 姓名 年龄  性别  从出生到2013年04月12日一共过了多少天(注意闰年)
  123.          // 是否抽烟喝酒  早上七点出发到北京一共用了多少时间,几点到的
  124.         public static void interduce(PersonMessage p[]) {
  125.                 for(int i = 0; i < p.length; i++) {
  126.                         System.out.println("我的姓名:" + p[i].getName() + "年龄:" + getAge(p[i]) + " 性别:" + getSex(p[i])
  127.                                         + " 过了多少天:" + getDate(p[i]) + "是否抽烟和喝酒 :" + p[i].getSomker() + " "+ p[i].getDrink()
  128.                                         + " 到北京一共多少时间(h): " + getTime(p[i]) + " "+(int) ((getTime(p[i]) + 7) % 24)+"点到");
  129.                 }
  130.         }
  131.         public static int getAge(PersonMessage p) {
  132.                 int year = Integer.valueOf(p.getIc().substring(6, 10));
  133.                 int month = Integer.valueOf(p.getIc().substring(10, 12));
  134.                 int day = Integer.valueOf(p.getIc().substring(12, 14));
  135.                 //2013年04月12日为标准
  136.                 int age = 0;
  137.                 if(month < 4)
  138.                         age = 2013 - year;
  139.                 else if(month == 4) {
  140.                         if(day < 12)
  141.                                 age = 2013 - year;
  142.                 }
  143.                 else
  144.                         age = 2013 - year - 1;
  145.                 return age;
  146.         }
  147.         public static String getSex(PersonMessage p) {
  148.                 if(Integer.valueOf(p.getIc().charAt(16) - '0') % 2 == 0)
  149.                         return "女";
  150.                 else
  151.                         return "男";
  152.         }
  153.         public static int getDate(PersonMessage p) {
  154.                 int year = Integer.valueOf(p.getIc().substring(6, 10));
  155.                 int month = Integer.valueOf(p.getIc().substring(10, 12));
  156.                 int day = Integer.valueOf(p.getIc().substring(12, 14));
  157.                 int date = 0;
  158.                 for(year = year + 1; year < 2013; year++) {
  159.                         if(year % 4 == 0 &&  year %100 != 0 || year % 400 == 0) {
  160.                                 date += 366;
  161.                         }
  162.                         else
  163.                                 date += 365;
  164.                 }
  165.                 switch (month) {
  166.                         case 1: date += 31;
  167.                         case 2: date += 28;
  168.                         case 3: date += 31;
  169.                         case 4: date += 30;
  170.                         case 5: date += 31;
  171.                         case 6: date += 30;
  172.                         case 7: date += 31;
  173.                         case 8: date += 31;
  174.                         case 9: date += 30;
  175.                         case 10: date += 31;
  176.                         case 11: date += 30;
  177.                         case 12: date += 12;
  178.                 }
  179.                 if(year % 4 == 0 &&  year %100 != 0 || year % 400 == 0)
  180.                         date = date + 31 + 28 + 31 + 30 + 12+1;
  181.                 else
  182.                         date = date + 31 + 28 + 31 + 30 + 12+1;
  183.                 return date;
  184.                
  185.         }
  186.         public static double getTime(PersonMessage p) {
  187.                 double time;
  188.                 time = p.getDistance() / 110;
  189.                 int d;
  190.                 return time;
  191.         }


  192. }
复制代码
回复 使用道具 举报
冯超 发表于 2013-4-13 11:22

:lol个人感觉 下次再发超长代码直接上传附件得了
回复 使用道具 举报
本帖最后由 陈圳 于 2013-4-13 15:52 编辑

把实现所有功能完善的代码写出来了.但所用知识不局限于前8章了, 我是怎么简单怎么做的.感觉实现的还是很麻烦.希望有高手给出更简单的方法实现这些功能.
  1. package exercises;
  2. import java.util.Calendar;
  3. import java.util.Comparator;
  4. import java.util.Iterator;
  5. import java.util.TreeSet;
  6. public class ItCastStudent {
  7.         用一种效率高的方法把后面两点做出来,所以不管什么知识,想到用上能做到就行了.
  8.         只能想到到用TreeSet的比较器来实现.这个效率要高点,因为底层好歹是二叉树,而for嵌套暴力查找.
  9.         程序花费的内存开销是呈:N的平方扩大的.数据越多,程序就越慢.
  10.         public static void main(String[] args) {
  11.                 getMsg();
  12.         }
  13.         public static void getMsg(){
  14.                 TreeSet<ItStudent> itcast=new TreeSet<ItStudent>(new AgeCompara());
  15.                 itcast.add(new ItStudent("老邵","152127198910054350","喝酒","不抽烟",1962));  
  16.                 itcast.add(new ItStudent("老刘","341222199112266570","喝酒","抽烟",1109));
  17.                 itcast.add(new ItStudent("无名","431222199112266570","喝酒","抽烟",1882));
  18.                 itcast.add(new ItStudent("老葛","341222198908176310","不喝酒","抽烟",1127));
  19.                 itcast.add(new ItStudent("清新她妹","111111199104135420","不喝酒","不抽烟",698));
  20.                 itcast.add(new ItStudent("某某","152127199207246580","喝酒","不抽烟",0));
  21.                 TreeSet<ItStudent> tempItcast=new TreeSet<ItStudent>(new DistanceCompara());
  22.                 for(Iterator<ItStudent> in=itcast.iterator();in.hasNext();tempItcast.add(in.next())); //俩个迭代我试过整合,但不行.
  23.                for(Iterator<ItStudent> in=itcast.iterator();in.hasNext();System.out.println(in.next()));
  24.                 }
  25.         }
  26. }
  27. class DistanceCompara implements Comparator<ItStudent>{//同乡的比较器
  28.         @Override
  29.         public int compare(ItStudent o1, ItStudent o2) {
  30.                 int distance=o1.getDistance()-o2.getDistance();
  31.                 if(Math.abs(distance)<=150&&o1.getName()!=o2.getName()){//这个值要自己定我认为150里以内的算是老乡
  32.                         o1.setCountryMen(o2.getName());
  33.                         o2.setCountryMen(o1.getName());
  34.                 }
  35.                 if(distance==0)
  36.                         return o2.getName().compareTo(o1.getName());
  37.                 else return distance;
  38.         }
  39.         
  40. }
  41. class AgeCompara implements Comparator<ItStudent>{
  42.         @Override
  43.         public int compare(ItStudent o1, ItStudent o2) {
  44.                 int age=o2.getAge()-o1.getAge();
  45.                 if(age==0&&o1.getName()!=o2.getName()){//这里就说明这俩个人肯定同年龄了
  46.                         //这里有个小问题,如果没有&&o1.getName()!=o2.getName()这一句的话.就会出现o1,o2是一个人的情况,我还没找到原因
  47.                         o2.setSameMen(o1.getName());//然后设置同名人
  48.                         o1.setSameMen(o2.getName());
  49.                         return o2.getName().compareTo(o1.getName());
  50.                 }
  51.                 else return age;
  52.         }
  53. }
  54. class ItStudent{
  55.         private String name;//姓名
  56.         private String id;//身份证号
  57.         private String hobby;//抽烟
  58.         private String unHobby;//喝酒,我以为是讨厌的事.
  59.         private String sameMen=null;//同龄人
  60.         private String countryMen=null;//老乡
  61.         private int nowYear=Calendar.getInstance().get(Calendar.YEAR);//在这与的过程中看到经常用这个,就写在这里.
  62.         
  63.         //计算属性的一些方法
  64.         //然后可以用2013代替,其他的日期也一样,但是不利于维护了.
  65.         public ItStudent(String name,String id,String hobby,String unHobby,int distance){//构造器
  66.                 this.name=name;
  67.                 this.id=id;
  68.                 this.hobby=hobby;
  69.                 this.unHobby=unHobby;
  70.                 this.distance=distance;
  71.         }
  72.         private int getDays(){//这个人活了多少天;
  73.                 int sumDays=0;
  74.                 int birthYear=getAge();
  75.                 int birthMouths=Integer.parseInt(this.id.substring(11,13));
  76.                 int birthDays=Integer.parseInt(this.id.substring(13,15));
  77.                 int nowYear=this.nowYear;
  78.                 int nowMouths=Calendar.getInstance().get(Calendar.MONTH)+1;
  79.                 int nowDays=Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
  80.                 sumDays+=getDays(birthYear,birthMouths)+getDays(nowYear,nowMouths)+nowDays-birthDays;//获得这出生日和今年己过的天数
  81.                 sumDays+=leapYearCount()*366+(this.nowYear-this.getAge()+leapYearCount())*355;
  82.                 return sumDays;
  83.         }
  84.         public int getDays(int year,int month){//获取给定日期的距离年过了多久.
  85.                 boolean isLeap=this.isLeapYear(year);
  86.                 int sumDays=0;
  87.                 while(month-->=0){
  88.                         switch(year){
  89.                                 case 1:case 3:case 5:case 7:case 8:case 10:case 12:
  90.                                         sumDays+=31;break;
  91.                                 case 4:case 6:case 9:case 11:
  92.                                         sumDays+=30;break;
  93.                         }
  94.                 }
  95.                 if(isLeap)
  96.                         return sumDays+=29;
  97.                 else return sumDays+=28;
  98.         }
  99.         private int leapYearCount(){
  100.                 int count=0;//计算活着闰年的次数
  101.                 int year=this.nowYear;
  102.                 int length=year-this.getAge();
  103.                 for(int i=getAge()+1;i<length;i++){
  104.                         if(this.isLeapYear(i))
  105.                                 count++;
  106.                 }
  107.                 return count;
  108.         }
  109.         private boolean isLeapYear(int year){
  110.                 if(year%4==0&&year%100!=0||year%100==0&&year%400==0)
  111.                         return true;
  112.                 else return false;
  113.         }
  114.         public String getHobby(){
  115.                 String hobby="我";
  116.                 if(this.hobby.length()<3)
  117.                         hobby+=this.hobby;
  118.                 if(this.unHobby.length()<3)
  119.                         hobby+=this.unHobby;
  120.                 if(hobby.length()==1)
  121.                         return "我不抽烟,不喝酒,";
  122.                 else return hobby;
  123.         }
  124.         
  125.         //私有属性的获取方法
  126.         private int getToBJHour(){
  127.                 return this.distance/110;
  128.         }
  129.         private int getToBJTime(){
  130.                 return this.getToBJHour()+7;
  131.         }
  132.         public String getSex(){//返回性别
  133.                 if(this.id.charAt(16)%2!=0)
  134.                         return "男";
  135.                 else return "女";
  136.         }
  137.         public int getAge(){//返回年龄
  138.                 return Integer.parseInt(this.id.substring(6,10));
  139.         }
  140.         public String getName() {
  141.                 return name;
  142.         }
  143.         public String getCountryMen() {
  144.                 return countryMen;
  145.         }
  146.         public void setCountryMen(String countryMen) {
  147.                 this.countryMen = countryMen;
  148.         }
  149.         private int distance;
  150.         public int getDistance() {
  151.                 return distance;
  152.         }
  153.         public String getSameMen() {
  154.                 return sameMen;
  155.         }
  156.         public void setSameMen(String same) {//量少的用String还可以,超过5次以上我就用StringBuilder
  157.                 if(this.sameMen!=null)
  158.                         this.sameMen += same;
  159.                 else this.sameMen=same;
  160.         }
  161.         
  162.         //打印信息
  163.         public String toString(){//姓名 年龄  性别  从出生
  164.                 StringBuilder msg=new StringBuilder();
  165.                 if(this.getToBJHour()==0)
  166.                         msg.append("我叫:"+name+" 年龄:"+this.getAge()+" 性别:"+getSex()+
  167.                                 " 我一共活了:"+getDays()+"天,"+getHobby()+"我家就在北京,所以不花时间~");
  168.                 else {
  169.                         msg.append("我叫:"+name+" 年龄:"+this.getAge()+" 性别:"+getSex()+
  170.                                         " 我一共活了:"+getDays()+"天,"+getHobby()+",我来北京用了"+
  171.                                         this.getToBJHour()+"小时,"+"现在是:"+this.getToBJTime()+"点");
  172.                 }
  173.                 if(this.countryMen!=null)
  174.                         msg.append(",我的老乡是:"+this.countryMen);
  175.                 if(this.sameMen!=null)
  176.                         msg.append(",与我同龄的娃是:"+this.sameMen);
  177.                 return msg.toString();
  178.         }
  179. }
复制代码
回复 使用道具 举报
陈圳 发表于 2013-4-13 15:47
把实现所有功能完善的代码写出来了.但所用知识不局限于前8章了, 我是怎么简单怎么做的.感觉实现的还是很麻 ...

哥们 加我QQ详谈  350158598
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马