我剛開始學習Objective-C。我正在做一個標準的計算器練習。它應該創建一個添加機器(例如,輸入操作員和編號,每次顯示結果)。但是我搞砸了一些東西,我認爲這與我使用「char」數據類型有關。循環和Objective-C中嵌套開關
下面的代碼,就在程序部分(接口和實現很簡單,在另一個版本的工作;還有,如果有人想看到他們,就問):
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
double value1 = 0.0;
char operator = 'a';
Calculator *deskCalc = [[Calculator alloc] init];
NSLog(@"Initial value?");
scanf("%lf",&value1);
[deskCalc setAccumulator: value1];
while (operator != 'e') {
{
NSLog(@"Operation and value?");
scanf("%c %lf", &operator, &value1);
}
switch (operator){
case '+':
[deskCalc add: value1];
NSLog(@"%f", [deskCalc accumulator]);
break;
case '-':
[deskCalc subtract: value1];
NSLog(@"%f", [deskCalc accumulator]);
break;
case '*':
case 'x':
[deskCalc multiply: value1];
NSLog(@"%f", [deskCalc accumulator]);
break;
case '/':
if (value1 != 0) {
[deskCalc divide: value1];
NSLog(@"%f", [deskCalc accumulator]);
}
else {
NSLog(@"Division by zero not allowed.");
NSLog(@"%f", [deskCalc accumulator]);
}
break;
case 's':
[deskCalc setAccumulator: value1];
NSLog(@"%f", [deskCalc accumulator]);
break;
case 'e':
NSLog(@"Done, sucker, final answer: %f.", value1);
default:
NSLog(@"Unknown operator.");
NSLog(@"%f", [deskCalc accumulator]);
break;
}
}
[deskCalc release];
[pool drain];
return 0;
}
而且,在情況下,它可以幫助,這就是我從終端獲得,當我運行此:
從終端:
初始值?
12 //我的輸入
操作和值?
x 4 //我的輸入
未知的運算符。
操作和值? //它不停地詢問輸入。
48.000000
操作和值?
幫助和感謝。
P.S.我知道這個節目非常笨重。請憐憫一下,我學到的最後一種語言是Coleco Adam上的Basic,它有一個磁帶驅動器 - 是的,就像一個盒式磁帶,它非常棒。
雖然可能不是你的問題,還有在「E」的情況下,沒有休息。你打算這麼做嗎? – Andy 2011-05-23 15:09:21
注意,在這種情況下,它總是有幫助的檢查實際值是,無論是檢查它在調試器或打印出來(在這種情況下大概爲十六進制或十進制值)是什麼。 – 2011-05-23 16:09:21
@安迪,啊,不。我的錯。那一個很好。 – ctaggart 2011-05-23 16:56:48