黑马程序员技术交流社区
标题:
转换时间代码
[打印本页]
作者:
sun~~
时间:
2013-2-24 23:04
标题:
转换时间代码
本帖最后由 sun~~ 于 2013-2-24 23:06 编辑
把时间为3时65分15秒转为4时5分15秒的程序,可是输出的结果不对呀!
/**
* @author pc 把时间为3时65分15秒转为4时5分15秒
*
*/
public class Time {
private int hours;
private int minutes;
private int seconds;
public Time(int hours, int minutes, int seconds) {
this.hours = hours;
this.minutes = minutes;
this.seconds = seconds;
validate();
}
//第一个构造方法
public Time(int hours,int minutes){
this(hours,minutes,0);
}
// 第二个构造方法
public Time(int hours){
this(hours,0);
}
public void validate(){
seconds=seconds%60;
minutes+=seconds%60;
minutes=minutes%60;
hours+=minutes%60;
hours=hours%24;
}
public void display(){
System.out.println(hours+":"+minutes+":"+seconds);
}
public static void main(String[] args){
Time t=new Time(3,10,65);
t.display();
t=new Time(3,65);
t.display();
t=new Time(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;
}
}
复制代码
作者:
黑马刘杰
时间:
2013-2-25 09:41
你的validate方法写的不对,我给你改成这样子了,你试一下吧
public void validate() {
minutes+=seconds/60;
seconds%=60;
hours+=minutes/60;
minutes%=60;
hours%=24;
}
复制代码
作者:
陈圳
时间:
2013-2-25 09:44
本帖最后由 陈圳 于 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;
}
}
错的算法有点多啊,我都改过来了,你自己看看
复制代码
作者:
sun~~
时间:
2013-2-25 09:51
黑马刘杰 发表于 2013-2-25 09:41
你的validate方法写的不对,我给你改成这样子了,你试一下吧
谢了 !!我已经得到答案了 !
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2