while循环找到一个运行总计

时间:2014-06-30 04:58:56

标签: objective-c while-loop

我正在尝试运行一个简单的while循环来向一些学生演示。练习是将数字放入文本框,按下按钮,运行总计显示在标签中。如果用户输入数字999,则循环将被破坏。以下是我当前的尝试。程序将加载,但按下按钮时没有任何反应。感叹!

以下是我目前的尝试。

- (IBAction)btnCalculate:(id)sender
{
    int Total, Number;

    Total = 0;
    Number= 0;

    while (Number!=999)
    {
        Number = [self.txtNumber.text integerValue];
        Total = Total + Number;
        self.lblTotal.text= [NSString stringWithFormat:@"%d",Total];
    }
}

2 个答案:

答案 0 :(得分:1)

您期望发生什么? 我认为循环阻塞了你的主线程,所以你看不到一切都发生了,也无法改变标签文本。

我认为为了您的目的,最好从标签上读取数字并增加总数,直到它具有数字值。

NSInteger number = [self.txtNumber.text integerValue];
while(total <= number) {
    NSLog("%d", total++);
}

如果你想把它放在lblTotal中你应该在后台线程上运行循环,但一定要在主线程上更新你的lbltotal.test。

答案 1 :(得分:0)

对我来说看起来像一个无限循环。单击该按钮时可能会调用该方法,并且您获得的整数值在后续循环迭代中不会更改(因为您不允许UI线程继续执行其操作)。您需要将状态移出到对象的属性中。这与从stdin读取输入不同。执行流应该遍历整个OS事件循环,而你的while循环并不是全部。因此,如果您输入的第一个值不是999,那么您将陷入while循环,并且在while循环中后续迭代之后获得的值不会更改(因为您的while循环是在UI线程上运行的唯一内容并且它是阻塞的进一步的互动)。

真的,你需要考虑控制的流程。它根本不像标准的终端输入/输出模型。