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

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

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

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

1回答

954閲覧

計算機の計算記号が押された際の処理

sena14

総合スコア109

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2020/07/07 15:36

計算機の処理でどのようなコードを書けば実装できるのか数日調べながら考えたのですが思いつかず投稿させていただきます。

悩んでいるのは演算子が押された時の処理です。
どの様な順番で計算の実行やvalue1,2の書き変えをしたらいいのかが分からずとても悩んでいます。

仕様としては一般的な電卓のように「数字を入力」「演算子をタップ」「数字を入力」「演算子をタップ(=以外でも)」で計算結果が表示されるようにしたいです。Activityから都度value1を表示するようにしています。

よろしくお願いします。

import android.widget.Button import java.math.BigDecimal class Calculator() { var value1 = "0" var value2 = "0" var value3 = "0" var operator = "" //オールクリアキーがクリックされた時 fun tapAllClear() { value1 = "0" value2 = "0" operator = "" } //クリアキーがクリックされた時 fun tapClear() { value1 = "0" } //バックキーがクリックされた時 fun tapBack() { if (value1.length == 1) { value1 = "0" } else { value1 = value1.substring(0, value1.length - 1) } } //演算子がクリックされた時 fun tapOperator(ope: String) { if (operator != "") { calculate() } value2 = value1 //value1 = "0" if (ope != "="){ operator = ope } } //数字がクリックされた時 fun tapNumber(number: String) { if (value1 == "0") { if (number != "0" && number != "00") { if (number == ".") { value1 = "0." } else { value1 = number } } } else { if (number != ".") { value1 += number } else if (!value1.contains(".")) { value1 += number } } } //計算実行 fun calculate() { val val1 = BigDecimal(value1) val val2 = BigDecimal(value2) when (operator) { "+" -> value1 = val2.add(val1).toString() "-" -> value1 = val2.minus(val1).toString() "×" -> value1 = val2.multiply(val1).toString() "÷" -> value1 = val2.divide(val1).toString() } value2 = "0" } }

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

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

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

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

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

y_waiwai

2020/07/07 21:33

現状のコードではどういう不具合があるんでしょう。 そして、それをどうしたいんでしょうか。 問題が見えません
sena14

2020/07/08 07:25

質問に書いた通り演算子をタップする際の処理をどうすれば良いのかが分かっていないので、現状では全く計算機として機能していないです。演算子を押しても計算がされずにvalue1の値は入力したものがただ表示されるだけの仕様です。 それを一般的な計算機のように+を押せば足し算をーを押せば引き算をした結果を表示させたいです。
guest

回答1

0

数字1、演算記号、数字2、を覚えておいて、その後の=記号を押したときに、

+なら数字1と数字2を足し、
-なら数字1から数字2を引き、
*なら数字1と数字2を掛け、
÷なら数字1を数字2で割る

という処理を書けばいいです

投稿2020/07/08 07:39

y_waiwai

総合スコア87719

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問