求一道简单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);
}
}
下面是我做的,但是当输入超过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的时候吧。。