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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

907閲覧

swift 電卓アプリ 足し算しかできないので、 改善点を教えてください。

kuroneko31

総合スコア10

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/07/12 15:04

前提・実現したいこと

swift を使って電卓アプリを作成しています。
ここまでで、エラーは無く実行まではできるのですが、
足し算しか反映されません。
どの部分を改良したら良いのでしょうか、、

該当のソースコード

import UIKit

class ViewController: UIViewController {

var numberOnScreen:Double = 0; var previousNumver:Double = 0; var performingMath:Bool = false var operation = 0; @IBOutlet weak var result: UILabel! @IBAction func numbers(_ sender: UIButton) { if performingMath == true{ result.text = String(sender.tag-1) numberOnScreen = Double(result.text!)! performingMath = false } else { result.text = result.text! + String(sender.tag-1) numberOnScreen = Double(result.text!)! } } @IBAction func buttons(_ sender: UIButton) { if result.text != "" && sender.tag != 11 && sender.tag != 16 { previousNumver = Double(result.text!)! if sender.tag == 12{ result.text = "+" } else if sender.tag == 13{ result.text = "-" } else if sender.tag == 14{ result.text = "×" } else if sender.tag == 15{ result.text = "÷" } operation = sender.tag performingMath = true; } else if sender.tag == 16 { if operation == 12{ result.text = String(previousNumver + numberOnScreen) } else if sender.tag == 13{ result.text = String(previousNumver - numberOnScreen) } else if sender.tag == 14{ result.text = String(previousNumver * numberOnScreen) } else if sender.tag == 15{ result.text = String(previousNumver / numberOnScreen) } } else if sender.tag == 11{ result.text = "" previousNumver = 0; numberOnScreen = 0; operation = 0; } } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. }

補足情報(FW/ツールのバージョンなど)

swift は最新バージョン、Xcordを使用しています。

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

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

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

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

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

Orlofsky

2019/07/12 15:12

きょうの最新バージョンでも明日は最新ではないかもしれません。 バージョンの調べ方をググっては?
guest

回答1

0

ベストアンサー

sender.tagの設定条件が不明なので推測です.
関数buttons内の条件式sender.tag==16の中のif-else文で足し算はoperationで判定していますが,そのほかの引き算などがsender.tagで判定しているため到達不能コードとなっています.
operationで判定するようにすると動かないでしょうか.

投稿2019/07/15 11:30

rcftdbeu

総合スコア167

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

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

kuroneko31

2019/07/15 16:10

他の全てをoperationに変更するとうまくいきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問