有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何解决这个问题?java作业

我有作业

这是我的问题

enter image description here

我的代码是

public class DisplayTime {

    public static void main(String[] args) {        
        int seconds = 290;
        int hour = seconds/60/60;
        int minute = seconds/60;

        seconds = seconds%60;      

        System.out.printf("The amount of [ 290 ] seconds are %02d:%02d:%02d\n",hour,minute,seconds);

         seconds = 7650;
         hour = seconds/60/60;
         minute  = seconds/60;

         seconds = seconds%60;

         System.out.printf("The amount of [ 7650 ] seconds are %02d:%02d:%02d\n",hour,minute,seconds);
    }
}

我在7650中的输出不一样为什么(

我的解决方案是真的吗


共 (3) 个答案

  1. # 1 楼答案

    像专业人士那样做:

        /*** Returns the Time**/
    public static String getTimeEdited(int seconds) {
    
        if (seconds / 60 > 60) // Is more than one hour>60
            return String.format("%02d:%02d:%02d",(seconds/60)/60,(seconds/60)%60,seconds%60);
        else                  // Is less than one hour<60
            return String.format("%02d:%02d",(seconds/60)%60,seconds%60);
    
    
    }
    
  2. # 2 楼答案

    这是因为你没有在几分钟内减去小时,所以时间是双重计算的。也就是说,使用minute = seconds / 60 - hour * 60;而不是minute = seconds / 60;您将得到正确的结果

    实际上,对于第一部分(The amount of [ 290 ] seconds are 00:04:50),您还应该修改代码。它看起来不错的原因是因为290秒不到一小时,所以问题没有出现

    以下是完整代码:

    public class DisplayTime {
    
        public static void main(String[] args) {
    
            int seconds = 290;
            int hour = seconds / 60 / 60;
            int minute = seconds / 60 - hour * 60;;
    
            seconds = seconds % 60;
    
            System.out.printf("The amount of [ 290 ] seconds are %02d:%02d:%02d\n", hour, minute, seconds);
    
            seconds = 7650;
            hour = seconds / 60 / 60;
            minute = seconds / 60 - hour * 60;
    
            seconds = seconds % 60;
    
            System.out.printf("The amount of [ 7650 ] seconds are %02d:%02d:%02d\n", hour, minute, seconds);
        }
    }
    

    结果如下:

    The amount of [ 290 ] seconds are 00:04:50
    The amount of [ 7650 ] seconds are 02:07:30
    
  3. # 3 楼答案

    正如@Balwinder在他的评论中提到的,您最好有一个helper方法,它接受秒数并打印出格式化的显示时间。下面的代码只需几行就可以完成这一点

    public static void printHMS(int secs) {
        int seconds = secs % 60;
        int minutes = (secs / 60) % 60;
        int hours   = (secs / 60) / 60;
    
        System.out.printf("The amount of [ %d ] seconds are %02d:%02d:%02d\n", secs, hours, minutes, seconds);
    }
    
    public static void main(String args[]) {
        printHMS(290);
        printHMS(7650);
    }
    

    输出:

    The amount of [ 290 ] seconds are 00:04:50
    The amount of [ 7650 ] seconds are 02:07:30