黑马程序员技术交流社区

标题: 转换时间代码 [打印本页]

作者: sun~~    时间: 2013-2-24 23:04
标题: 转换时间代码
本帖最后由 sun~~ 于 2013-2-24 23:06 编辑
  1. 把时间为3时65分15秒转为4时5分15秒的程序,可是输出的结果不对呀!
  2. /**
  3. * @author pc 把时间为3时65分15秒转为4时5分15秒
  4. *
  5. */
  6. public class Time {
  7.         private int hours;
  8.         private int minutes;
  9.         private int seconds;

  10.         public Time(int hours, int minutes, int seconds) {
  11.                 this.hours = hours;
  12.                 this.minutes = minutes;
  13.                 this.seconds = seconds;
  14.                 validate();
  15.         }
  16. //第一个构造方法
  17.         public Time(int hours,int minutes){
  18.                 this(hours,minutes,0);
  19.         }
  20. //        第二个构造方法
  21.         public Time(int hours){
  22.                 this(hours,0);
  23.         }
  24.         public void validate(){
  25.                 seconds=seconds%60;
  26.                 minutes+=seconds%60;
  27.                 minutes=minutes%60;
  28.                 hours+=minutes%60;
  29.                 hours=hours%24;
  30.         }
  31.         public void display(){
  32.                 System.out.println(hours+":"+minutes+":"+seconds);
  33.         }
  34.         public static void main(String[] args){
  35.                 Time t=new Time(3,10,65);
  36.                 t.display();
  37.                 t=new Time(3,65);
  38.                 t.display();
  39.                 t=new Time(26);
  40.                 t.display();
  41.         }
  42.         
  43.         public int getHours() {
  44.                 return hours;
  45.         }
  46.         public void setHours(int hours) {
  47.                 this.hours = hours;
  48.         }

  49.         public int getMintues() {
  50.                 return minutes;
  51.         }

  52.         public void setMintues(int minutes) {
  53.                 this.minutes = minutes;
  54.         }

  55.         public int getSeconds() {
  56.                 return seconds;
  57.         }

  58.         public void setSeconds(int seconds) {
  59.                 this.seconds = seconds;
  60.         }

  61. }
复制代码

作者: 黑马刘杰    时间: 2013-2-25 09:41
你的validate方法写的不对,我给你改成这样子了,你试一下吧
  1. public void validate() {
  2.                
  3.                 minutes+=seconds/60;
  4.                 seconds%=60;
  5.                
  6.                 hours+=minutes/60;
  7.                 minutes%=60;
  8.                
  9.                 hours%=24;
  10.         }
复制代码

作者: 陈圳    时间: 2013-2-25 09:44
本帖最后由 陈圳 于 2013-2-25 09:46 编辑
  1. package Day15;
  2. //把时间为3时65分15秒转为4时5分15秒的程序,可是输出的结果不对呀!
  3. /**
  4. * @author pc 把时间为3时65分15秒转为4时5分15秒
  5. *
  6. */
  7. public class Test1 {
  8.         private int hours;
  9.         private int minutes;
  10.         private int seconds;

  11.         public Test1(int hours, int minutes, int seconds) {
  12.                 this.hours = hours;
  13.                 this.minutes = minutes;
  14.                 this.seconds = seconds;
  15.                 System.out.println("horu="+this.hours+" miuntes:"+this.minutes+" this.seconds:"+this.seconds);
  16.                 validate();
  17.         }
  18. //第一个构造方法
  19.         public Test1(int hours,int minutes){
  20.                 this(hours,minutes,0);
  21.         }
  22. //        第二个构造方法
  23.         public Test1(int hours){
  24.                 this(hours,0);
  25.         }
  26.         public void validate(){
  27.                 if(seconds>59)//你没有加判断,加了判断会少一些操作,提高效率
  28.                 {
  29.                          this.minutes+=(int)(this.seconds/60);//你的原句:minutes+=seconds%60分析一下为什么会 错  //这是你的句2
  30.                          this.seconds=this.seconds%60;//s为计算后的值,如果s没有大于60,计算失误了. 这一步计算之后,seconds已经为5了,下面的计算肯定会错,//这是你的句1
  31.                          //句1和句2的顺序要调过来,因为句1在上面的时候seconds的值已经被取模过,已经变为>60的值了.句2的操作完全不起作用了
  32.                
  33.                 }
  34.                 if(minutes>59)
  35.                 {
  36.                         hours+=(int)(minutes/60);
  37.                 minutes=minutes%60;//
  38.                 }
  39.                 hours=hours%24;
  40.                
  41.         }
  42.         public void display(){
  43.                 System.out.println(hours+":"+minutes+":"+seconds);
  44.         }
  45.         public static void main(String[] args){
  46.                 Test1 t=new Test1(3,10,65);
  47.                 t.display();
  48.                 t=new Test1(3,65);
  49.                 t.display();
  50.                 t=new Test1(26);
  51.                 t.display();
  52.         }
  53.         
  54.         public int getHours() {
  55.                 return hours;
  56.         }
  57.         public void setHours(int hours) {
  58.                 this.hours = hours;
  59.         }

  60.         public int getMintues() {
  61.                 return minutes;
  62.         }

  63.         public void setMintues(int minutes) {
  64.                 this.minutes = minutes;
  65.         }

  66.         public int getSeconds() {
  67.                 return seconds;
  68.         }

  69.         public void setSeconds(int seconds) {
  70.                 this.seconds = seconds;
  71.         }

  72. }
  73. 错的算法有点多啊,我都改过来了,你自己看看
复制代码

作者: sun~~    时间: 2013-2-25 09:51
黑马刘杰 发表于 2013-2-25 09:41
你的validate方法写的不对,我给你改成这样子了,你试一下吧

谢了 !!我已经得到答案了 !




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