我刚刚开始自学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;
}
提前感谢您的帮助。如果我没有提供足够的信息,我道歉!请让我知道,我将非常愿意提供更多。再次感谢所有人!
答案 0 :(得分:0)
您可能想查看Scanf skips every other while loop in C
你需要做一些额外的工作来确保scanf()在用户输入'y','n'或者在按下enter之前输入的任何其他键流时读取stdin上的换行符。
此其他帖子似乎也相关:Why is scanf() causing infinite loop in this code?