0

私は電卓を作っていて、すべての関数を定義しました SUM SUB DIV MUL

次に、これを入力すると、条件は間違っていますが、最初のステートメントのみが渡されます

だから私が持っているのは 2 つのテキスト フィールド
ボタンごとに 4 つのアクション
2 つのアクション: result と clear
と + または - または * または ÷ を取る操作のラベル ... Operation と呼ばれるこのラベル

計算アクションでこのifステートメントを入力しましたが、何が間違っているのかわかりません。計算をタップすると、+ の操作の場合は最初の操作になります。

1 -4 を押すと、1 + 4 = 5 と表示されます

 //in -(IBAction)calculate :

-(IBAction)Calculate:(id)sender{
if (operation.text=@"+"){
//sum
a =num1.text.integerValue;
b= num2.text.integerValue;
c=num1.text.integerValue+num2.text.integerValue;
printf("%i >> %i",b,num2.text.integerValue);
[num1 resignFirstResponder];
[num2 resignFirstResponder];
result.text =[NSString stringWithFormat:@"%i + %i = %i",a,b,c];}

 else if (operation.text=@"-"){
//sub
a =num1.text.integerValue;
b= num2.text.integerValue;
c=num1.text.integerValue-num2.text.integerValue;
printf("%i >> %i",b,num2.text.integerValue);
[num1 resignFirstResponder];
[num2 resignFirstResponder];
    result.text =[NSString stringWithFormat:@"%i - %i = %i",a,b,c];}

else if (operation.text=@"*"){
//mul
a =num1.text.integerValue;
b= num2.text.integerValue;
c=num1.text.integerValue*num2.text.integerValue;
printf("%i >> %i",b,num2.text.integerValue);
[num1 resignFirstResponder];
[num2 resignFirstResponder];
result.text =[NSString stringWithFormat:@"%i * %i = %i",a,b,c];
}

//div
else if (operation.text=@"÷"){
a =num1.text.integerValue;
b= num2.text.integerValue;
c=num1.text.integerValue/num2.text.integerValue;
printf("%i >> %i",b,num2.text.integerValue);
[num1 resignFirstResponder];
[num2 resignFirstResponder];
result.text =[NSString stringWithFormat:@"%i ÷ %i = %i",a,b,c];
}

 }
4

1 に答える 1

1

=は代入を実行するため、if (operation.text=@"+")実際には に代入@"+"されoperation.text、等しいかどうかは比較されません。if割り当てられた値は、ステートメントによって true として扱われます。

于 2012-09-09T18:44:00.370 に答える