0

電卓のプラス/マイナスボタンを機能させようとしています。基本的には、表示された数値が0でない限り、表示された数値に-1を掛ける必要があります。

私はこのようにすると思いました。
0 より大きい場合は "-" 記号を先頭に追加し
、0 より小さい場合は文字列の最初の文字を削除し (これは "-" になります)、
0 の場合はそのままにします。

それが私が始めた方法です

- (IBAction)plusminusPressed:(id)sender
{   

NSString *minusString = [NSString stringWithFormat:@"-"];
NSString *mainLabelString = mainLabel.text;


if (mainLabelString > 0)
    mainLabel.text = [minusString stringByAppendingFormat:mainLabelString]; 

}

0より大きい数値でも機能しますが、0の前にマイナスを追加し、0未満の数値を追加するだけです。
他の2つの可能性で機能させるにはどうすればよいですか?

 else if ([mainLabelString isEqualToString:@"0"])
    mainLabel.text = [mainLabelString];  

しかし、それは識別子を期待しています。他の 2 つの可能性についてはどうすればよいですか。最初の 1 つでも問題ありませんでしたか?
代わりに別の方法でそれを行いますか?

4

3 に答える 3

2

電卓でもこれを試しました。私の答えをあなたと共有したいと思います。

- (IBAction)plusminusPressed{
    if ([TextInput.text isEqualToString:@"0"]) {
        return;
    }else{
        NSString * negative = @"-";
        if(!changingSign){
            changingSign = YES;
            TextInput.text= [negative stringByAppendingString:TextInput.text];
        }else{
            changingSign = NO;
            TextInput.text = [TextInput.text substringFromIndex:1];
        }
    }

}

お役に立てれば..

于 2012-12-04T15:22:17.477 に答える
2

NSString を数値 0 と比較しようとしているためにエラーが発生する理由:

if (mainLabelString > 0)

それは Obj-C での動作ではありません。「mainLabelString」の値を0のように比較する必要があります

[mainLabelString intValue] > 0

また

[mainLabelString doubleValue] > 0

また

[mainLabelString floatValue] > 0

Standford Univ による iTunes Univ の iOS チュートリアル - iOS 用アプリの開発をチェックしてください。簡単な電卓の作成に関する章があります。

于 2012-11-29T11:20:52.960 に答える
1

なぜそんなに複雑にするのですか?

これを行うには、float または int 変数を使用する必要があります。

次のような整数を宣言します。

int result;

そして、結果変数に値を格納します。

結果を次のようにラベルに追加する必要があります。

mainLabel.text = [NSString stringByAppendingFormat:@"%d",result];

その条件も必要ありません。

于 2012-11-29T11:16:06.217 に答える