1

我刚开始自学Objective C,并且一直在玩一个简单的基于控制台的计算器。首先,我询问用户他们想要执行哪个操作,对哪两个数字执行该操作,然后在计算完答案后打印答案。

这部分似乎一切正常——我试图实现的下一个部分是允许用户继续进行计算,直到他们决定不再想要。我的想法是在检查结束时将计算器的运行放在 do/while 循环中,以查看用户是否希望通过 scanf(); 继续通过“y”或“no”,然后检查查看用户选择响应的内容。我遇到的是在第一遍结束时,通过 scanf() 请求输入;只是被忽略,程序终止。

我希望能得到一些帮助:) 我已经尽我所能通过故障排除、在线研究(在 scanf() 的空白问题上找到了一些东西;但这没有帮助)和一些猜测但是到目前为止,我一直没有成功。以下是我的代码的主要部分:

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];


    float answer;
    char op,repeat;
    NSLog(@"Welcome to my sexy calculater, (_(_)!!"); //don't mind me being weird

    Calculater *deskCalc;   
    deskCalc=[[Calculater alloc] init];

    do
    {

        [deskCalc clear];//clear calc

        op =[deskCalc getOperator]; //get +,-,*,or/
        [deskCalc getNumbers]; //get two numbers

        [deskCalc calculate: op];
        answer=[deskCalc accumulater];

        NSLog(@"Your answer is %f!", answer);


        NSLog(@"Would you like to calculate something again(y/n)?");
        scanf("%c",&repeat);
        //NSLog(@"You typed: %c", repeat);

    } while (repeat=='y');

    [deskCalc release];

    [pool drain];
    return 0;
}

提前感谢您的帮助。如果我没有提供足够的信息,我很抱歉!请让我知道,我会非常愿意提供更多。再次感谢大家!

4

1 回答 1

0

您可能想看看Scanf 在 C 中每隔一个 while 循环

您需要做一些额外的工作以确保 scanf() 在用户输入“y”、“n”或他们在按 Enter 之前按下的任何其他键流之后读取标准输入上的换行符。

其他帖子似乎也很相关:为什么 scanf() 在此代码中导致无限循环?

于 2011-02-23T19:15:47.873 回答