質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

Q&A

2回答

1371閲覧

計算機の計算がおかしい

souroppy

総合スコア44

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

0グッド

0クリップ

投稿2016/05/02 13:10

計算機をとりあえず、数字の1と2のボタンを作ってみたのですが、エミュレーターで試してみると、1のボタンを押したときに100000000・・・みたいな意味不明な数字がでてきてしまいます。原因と改善点がわかれば教えてください。

Objective

1- (IBAction)inputNumber1:(id)sender { 2 3 NSInteger num1 = num1 + 1; 4 NSString *print = [[NSString alloc] initWithFormat:@"%ld!", (long)num1]; 5 self->kekka.text= print; 6 7} 8 9- (IBAction)inputNumber2:(id)sender { 10 11 NSInteger num1 = num1 + 1; 12 NSString *print = [[NSString alloc] initWithFormat:@"%ld!", (long)num1]; 13 self->kekka.text= print; 14 15} 16 17@end 18

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

計算機を作るのであれば、一個ずつのボタンのIBActionを作るのではなく、

-(IBAction)tap(UIButton *)tappedbutton{
}
で、設定したtag(ボタンに0~9までのtagを設定しておいて)を使えばもっと綺麗なコードになるかと思います。
なお、計算機は押したボタンの数字の列ではなく、一つの数にしなければなりません。そのためのアルゴリズムが、打ったボタンのタグ * 10 + つぎに打ったボタンのタグ になります。

なにか2つ別の変数を作り、tagの保管に使えばいいかと思います。

例えば

#import "ViewController.h" @interface ViewController () { int first; int second; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; } -(IBAction)tap:(UIButton *)tapped { first = tapped.tag; second = first * 10 + second; NSLog(@"%d",second); }

これでいかがでしょうか?

投稿2016/07/29 00:14

maplesugar_17

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Objective-Cは不勉強なので外しているかもですが・・・

NSInteger num1 = num1 + 1;

num1の初期値はどこで設定しているのでしょう?

投稿2016/05/02 16:53

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

souroppy

2016/05/02 21:28

多分そこのような気がするのですが、普通に num1 = 0 と打つと、 - (IBAction)inputNumber1:(id)sender { の所にエラーが出てきてしまいます・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問