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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

3029閲覧

電卓アプリの作成

fla

総合スコア14

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/01/21 15:13

###前提・実現したいこと
簡単な電卓を作りたいです。

public class Calculator extends AppCompatActivity { double sum = 0; double sum2 = 0; boolean plus = false; boolean minus = false; boolean multi = false; boolean divide = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_calculator); TextView textView = (TextView) findViewById(R.id.sum); textView.setText(String.valueOf(sum)); } public void p0(View view) { if (plus || minus || multi || divide) { sum = 0; } else { sum = sum * 10; } } public void p1(View view) { if (plus || minus || multi || divide) { sum = 1; } else { sum = sum * 10 + 1; } } public void p2(View view) { if (plus || minus || multi || divide) { sum = 2; } else { sum = sum * 10 + 2; } } public void p3(View view) { if (plus || minus || multi || divide) { sum = 3; } else { sum = sum * 10 + 3; } } public void p4(View view) { if (plus || minus || multi || divide) { sum = 4; } else { sum = sum * 10 + 4; } } public void p5(View view) { if (plus || minus || multi || divide) { sum = 5; } else { sum = sum * 10 + 5; } } public void p6(View view) { if (plus || minus || multi || divide) { sum = 6; } else { sum = sum * 10 + 6; } } public void p7(View view) { if (plus || minus || multi || divide) { sum = 7; } else { sum = sum * 10 + 7; } } public void p8(View view) { if (plus || minus || multi || divide) { sum = 8; } else { sum = sum * 10 + 8; } } public void p9(View view) { if (plus || minus || multi || divide) { sum = 9; } else { sum = sum * 10 + 9; } } public void plus(View view) { sum2 = sum; plus = true; minus = false; multi = false; divide = false; } public void minus(View view) { sum2 = sum; minus = true; plus = false; multi = false; divide = false; } public void multi(View view) { sum2 = sum; multi = true; plus = false; minus = false; divide = false; } public void divide(View view) { sum2 = sum; divide = true; plus = false; minus = false; multi = false; } public void equal(View view) { if (plus) { sum = sum + sum2; plus = false; sum2 = 0; } if (minus) { sum = sum - sum2; minus = false; sum2 = 0; } if (multi) { sum = sum * sum2; multi = false; sum2 = 0; } if (divide) { sum = sum / sum2; divide = false; sum2 = 0; } } public void c(View view) { sum = 0; sum2 = 0; } }

メソッドのp0~9が数字のボタンを押したときの処理。plus,minus,multi,divideが四則演算の処理。equalが=を押したときの処理となっています。

###発生している問題・エラーメッセージ

困っていることは二つで、 まず一つは電卓によくある一桁だけ削除するボタンの実装です。 もう一つが小数点の実装です。今は10をかけてから1の位を足すやり方をしているのですが、小数点になるとそれが通用しなくなってしまいます。今のやり方をすべて見直す必要があるのでしょうか? 1つ目の問題は今のやり方でいくなら1の位の数字を引いて10で割ればとりあえずは実装できそうですが1の位のチェックをしなければいけないという点がありもっと良い方法があるなら教えていただきたいです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

私なら文字列で入れた後、演算子記号が入力されるなどで数値が確定した後で数値変換しますね。
文字列なら10をかけたり10で割ったりとかややこしいことなく、ただ文字をつけ足したり削ったりで済むので。

投稿2017/01/21 15:22

swordone

総合スコア20651

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

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

fla

2017/01/27 08:00

ありがとうございますやってみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問