Java Time(4,129)应该给出6小时9分钟

时间:2015-11-19 04:36:31

标签: java

我的程序有问题会告诉时间。例如,如果你问java什么时间(4,129),输出应该给6小时9分钟(因为129分钟可以简化。

注意:这只是我代码的一部分。我知道我的代码将失败,例如120,180。

我明白我的forloop是低效的,但这不是问题。我的问题是我的时间输出(4,129)给了我4小时和-51分钟,这是错误的。它应该是6小时9分钟。

我认为代码是如何工作的:

  1. 我们输入forloop,转到if语句,检查129%60是否大于0(9> 0),这是真的,然后继续。

    2.对于if语句的主体,分钟将从129减少到69并将小时增加1(现在是5小时)。 Forloop结束。

    1. 我们重复我们的forloop,这是第二次迭代。检查陈述条件,69%60> 0 - > 9> 0,True,转到if语句体。
    2. 分钟将从69分钟变为9,小时数增加1.如果语句结束。
    3. 如果语句未运行,则重复if语句,第三次迭代,9%60为false。
  2. Time(int x, int y) {
            hours = x;
            minutes = y;
            for (int i = 0; i < 12; i++) {
                int temp;
    
                if (minutes % 60 > 0) {
                    minutes = minutes - 60;
                    hours = hours++;
    

3 个答案:

答案 0 :(得分:1)

  

如果语句没有运行,则重复if语句,9%60为假

是吗?对于9 minutes % 6090,大于minutes > 59。你想要hours += minutes / 60; minutes %= 60,不需要模数。

但更简单:- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [[event allTouches] anyObject]; CGPoint touchLocation = [touch locationInView:self.view]; button.frame.x = touchlocation.x; button.frame.y = touchlocation.y; } 。不需要循环。

答案 1 :(得分:0)

不清楚为什么使用循环。但如果你坚持,怎么样

while (minutes >= 60) {
  minutes -= 60;
  hours += 1;
}

您对最终循环的分析是错误的。 9%60是9.那大于0所以分钟变成-51。

答案 2 :(得分:0)

这将产生正确的结果,代码中的缺陷是使用模数来确定何时应该考虑分钟:

class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        int x = 4;
        int y = 129;
        int hours = x;
        int minutes = y;
        for (int i = 0; i < 12; i++) {
            int temp;

            if (minutes > 59) {
                minutes = minutes - 60;
                hours = ++hours;
        }
    }
    System.out.println("Hours: "+ hours + " minutes: " + minutes);
}
}