所以我试图制作一个可以将s从输入转换为h,m和s的程序。到目前为止我的代码看起来像这样:
import java.util.Scanner;
class q2_5{
public static void main(String args[]){
Scanner input = new Scanner(System.in);
int s=0;//seconds
int m=0;//minutes
int h=0;//hour
System.out.println("how many seconds?");
s=input.nextInt();
if(s >= 60){
m=s/60;
} if(m>=60){
h=m/60;
}
System.out.println(s + "s = " + h + " h " + m + " m " + s + "s ");
}
}
好吧所以我不得不将s,m,h初始化为0 cuz如果不是我在if语句中遇到问题,所以我只是将它设置为0,因为我可以稍后更改:)确定。所以现在这个程序的问题是,如果我输入3603我得到这个输出:3603s = 1小时60米3603s,如果我输入3600我得到这个: 3600s = 1小时60 m 3600s,但输出应分别为3603s = 1h 0m 3s和3600s = 1h 0m 0s。关于如何解决这个问题的任何提示/建议/解决方案? :D提前谢谢!
答案 0 :(得分:3)
我的解决方案是:
String secToTime(int sec) {
int second = sec % 60;
int minute = sec / 60;
if (minute >= 60) {
int hour = minute / 60;
minute %= 60;
return hour + ":" + (minute < 10 ? "0" + minute : minute) + ":" + (second < 10 ? "0" + second : second);
}
return minute + ":" + (second < 10 ? "0" + second : second);
}
答案 1 :(得分:2)
您可以在一行中完成所有操作:
System.out.println((s/3600) + ' hours ' + ((s/60)%60) + ' minutes ' + (s%60) + ' seconds');
答案 2 :(得分:2)
显然你正在做一些功课/练习来学习Java。但是,仅供参考,在实际工作中你不需要进行那些计算和操作。这是一个类。
在一段时间内,请使用Duration
课程。你不需要做数学运算。
Duration d = Duration.ofSeconds( s );
表示未附加到时间轴的时间跨度的字符串的标准ISO 8601格式接近您想要的输出:PnYnMnDTnHnMnS
其中P标记开头而T分隔任何年 - 月 - 任何小时 - 分钟 - 秒的天数。所以一个半小时是PT1H30M
。
在解析或生成字符串时,java.time类默认使用ISO 8601格式。
String output = d.toString() ;
在Java 9及更高版本中,您可以调用to…Part
方法来检索小时,分钟和秒的各个部分。
答案 3 :(得分:1)
您从未更改s
的值。快速解决方法是s = s - (h*3600 + m*60)
编辑:t = s - (h*3600 + m*60)
答案 4 :(得分:1)
Java 8为日期和时间操作带来了很棒的API。
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class Converter {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
public String convert(int seconds) {
LocalTime time = LocalTime.MIN.plusSeconds(seconds).toLocalTime();
return formatter.format(time);
}
}
基本上,此代码会将支持的最小日期时间的秒数添加到HH:mm:ss等于00:00:00。
由于您只对时间感兴趣,可以通过调用 toLocalTime()来提取它,并根据需要对其进行格式化。
答案 5 :(得分:0)
每次设置较低的字词时,请尝试从第一个字词中减去。
class Test{
public static void main(String args[]){
Scanner input = new Scanner(System.in);
int s=0;//seconds
int m=0;//minutes
int h=0;//hour
System.out.println("how many seconds?");
s=input.nextInt();
if(s >= 60){
m=s/60;
s = s- m*60;
} if(m>=60){
h=m/60;
m = m - h*60;
}
System.out.println(s + "s = " + h + " h " + m + " m " + s + "s ");
}
}
顺便说一下,请记得关闭input
扫描仪!像这样:input.close()
接近程序结束。
答案 6 :(得分:0)
你应该试试这个
import java.util.Scanner;
public class Time_converter {
public static void main(String[] args)
{
Scanner input = new Scanner (System.in);
int seconds;
int minutes ;
int hours;
System.out.print("Enter the number of seconds : ");
seconds = input.nextInt();
hours = seconds / 3600;
minutes = (seconds%3600)/60;
int seconds_output = (seconds% 3600)%60;
System.out.println("The time entered in hours,minutes and seconds is:");
System.out.println(hours + " hours :" + minutes + " minutes:" + seconds_output +" seconds");
}
}
答案 7 :(得分:0)
import java.util.Scanner;
public class Prg2 {
public static void main(String[] args) {
int seconds = 0;
int hours = 0;
int minutes = 0;
int secondsDisp = 0;
Scanner in = new Scanner(System.in);
System.out.println("Enter the number of seconds: ");
seconds = in.nextInt();
hours = seconds/3600;
minutes = (seconds - (hours*3600))/60;
secondsDisp = ((seconds - (hours*3600)) - (minutes * 60));
System.out.println(seconds + " seconds equals " + hours + " hours, " + minutes + " minutes and " + secondsDisp + " seconds");
}
}
答案 8 :(得分:0)
class time{
public static void main (String args[]){
int duration=1500;
String testDuration = "";
if(duration < 60){
testDuration = duration + " minutes";
}
else{
if((duration / 60)<24)
{
if((duration%60)==0){
testDuration = (duration / 60) + " hours";
}
else{
testDuration = (duration / 60) + " hours," + (duration%60) + " minutes";
}
}
else{
if((duration%60)==0){
if(((duration/60)%24)==0){
testDuration = ((duration / 24)/60) + " days,";
}
else{
testDuration = ((duration / 24)/60) + " days," + (duration/60)%24 +"hours";
}
}
else{
testDuration = ((duration / 24)/60) + " days," + (duration/60)%24 +"hours"+ (duration%60) + " minutes";
}
}
}
System.out.println(testDuration);
}
}
答案 9 :(得分:0)
更简单的解决方案是:
T = in.nextInt();
int s = T%60;
int minute = T/60;
int m = minute%60;
int h = minute/60;
return h+"h"+m+"m"+s+"s";
答案 10 :(得分:-1)
使用此代码:
import java.util.Scanner;
class q2_5{
public static void main(String args[]){
Scanner input = new Scanner(System.in);
int s=0;//seconds
int m=0;//minutes
int h=0;//hour
int s_input=0;
System.out.println("how many seconds?");
s_input=input.nextInt();
s=s_input%60;
if(s >= 60){
m=s_input/60;
}if(m>=60){
h=m/60;
m=m%60;
}
System.out.println(s + "s = " + h + " h " + m + " m " + s + "s ");
}
}