求一道简单java题的解

来源:百度知道 编辑:UC知道 时间:2024/06/04 00:27:30
要求:输入一数字作为秒数,按小时,分钟,秒的格式输出。(x:x:x)

下面是我做的,但是当输入超过3600的时候,就会出问题.就会不符合常理.

如: 1:68:3740 有谁见过这样的时钟.呵呵 请高手指教下!

import java.util.Scanner;

public class Clock {

int when , every , minute , m;

int when(){

when=m/3600;

return when;
}

int every (){

every=m/60;

return every;

}

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

Clock c = new Clock();

c.m=in.nextInt();

System.out.println(c.when()+":"+c.every()+":"+c.m);

}

}

这是当然的了,因为你只求商而没有取余的原因
假设有3740秒,你要除3600后用剩下的140秒除60才得分,但是你却还是用3740除的,所以会出现你这种情况
正确的:

import java.util.Scanner;

public class Clock {

int when , every ,second , m;

int when(){

when=m/3600;

return when;
}

int every (){

every=m%3600/60;

return every;

}

int getSecond() {

second = m%3600%60;

}

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

Clock c = new Clock();

c.m=in.nextInt();

System.out.println(c.when()+":"+c.every()+":"+c.getSecond());

}

}

你好像没有对m做处理吧?你输入的值就是m,最后你还是输出了m,没有对m进行转换啊,应该再处理完小时、分以后把那些值去掉,显示成秒。
when是小时:when = m/3600,every是分:every = (m%3600)/60,然后m = m-3600*when-60*every或者是m = (m%3600)%60
如果你没有处理的话,应该不管怎样都不正确了,而不是大于3600的时候吧。。