我的程序有问题会告诉时间。例如,如果你问java什么时间(4,129),输出应该给6小时9分钟(因为129分钟可以简化。
注意:这只是我代码的一部分。我知道我的代码将失败,例如120,180。
我明白我的forloop是低效的,但这不是问题。我的问题是我的时间输出(4,129)给了我4小时和-51分钟,这是错误的。它应该是6小时9分钟。
我认为代码是如何工作的:
我们输入forloop,转到if语句,检查129%60是否大于0(9> 0),这是真的,然后继续。
2.对于if语句的主体,分钟将从129减少到69并将小时增加1(现在是5小时)。 Forloop结束。
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++;
答案 0 :(得分:1)
是吗?对于如果语句没有运行,则重复if语句,9%60为假
9
minutes % 60
,9
为0
,大于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);
}
}