本帖最后由 陈圳 于 2013-2-25 09:46 编辑
- package Day15;
- //把时间为3时65分15秒转为4时5分15秒的程序,可是输出的结果不对呀!
- /**
- * @author pc 把时间为3时65分15秒转为4时5分15秒
- *
- */
- public class Test1 {
- private int hours;
- private int minutes;
- private int seconds;
- public Test1(int hours, int minutes, int seconds) {
- this.hours = hours;
- this.minutes = minutes;
- this.seconds = seconds;
- System.out.println("horu="+this.hours+" miuntes:"+this.minutes+" this.seconds:"+this.seconds);
- validate();
- }
- //第一个构造方法
- public Test1(int hours,int minutes){
- this(hours,minutes,0);
- }
- // 第二个构造方法
- public Test1(int hours){
- this(hours,0);
- }
- public void validate(){
- if(seconds>59)//你没有加判断,加了判断会少一些操作,提高效率
- {
- this.minutes+=(int)(this.seconds/60);//你的原句:minutes+=seconds%60分析一下为什么会 错 //这是你的句2
- this.seconds=this.seconds%60;//s为计算后的值,如果s没有大于60,计算失误了. 这一步计算之后,seconds已经为5了,下面的计算肯定会错,//这是你的句1
- //句1和句2的顺序要调过来,因为句1在上面的时候seconds的值已经被取模过,已经变为>60的值了.句2的操作完全不起作用了
-
- }
- if(minutes>59)
- {
- hours+=(int)(minutes/60);
- minutes=minutes%60;//
- }
- hours=hours%24;
-
- }
- public void display(){
- System.out.println(hours+":"+minutes+":"+seconds);
- }
- public static void main(String[] args){
- Test1 t=new Test1(3,10,65);
- t.display();
- t=new Test1(3,65);
- t.display();
- t=new Test1(26);
- t.display();
- }
-
- public int getHours() {
- return hours;
- }
- public void setHours(int hours) {
- this.hours = hours;
- }
- public int getMintues() {
- return minutes;
- }
- public void setMintues(int minutes) {
- this.minutes = minutes;
- }
- public int getSeconds() {
- return seconds;
- }
- public void setSeconds(int seconds) {
- this.seconds = seconds;
- }
- }
- 错的算法有点多啊,我都改过来了,你自己看看
复制代码 |