Javaで電卓を作っています。
https://ideone.com/mquzPm
10+20=30、12-2=10、2*10=20、6/3=2など、1回の計算はできるのですが、連続した計算をすると、2+3*6=18のようになってしまいます。
連続した計算をするにはどこをどのように変えれば良いでしょうか。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
№1さんと№2さんが回答してますので概ねそれでいいと思います。
問題は、2+3*6=いくつにしたいかです。
電卓では、30になりますよね。
これは(2+3)*6だからです。
一方、算数的には、掛け算優先ですから20が正しいです。
よって、式全体が入力し終わらないと優先順序が決まらないという問題があります。
なかなか手ごわいですね。
頑張ってください。
No.2
- 回答日時:
関数電卓ではなく、通常電卓のように演算順の考慮が必要ないのなら、
ボタン "+ - * /" の処理前に
すでに op が存在するなら
ボタン "=" と同じ処理をしましょう
No.1
- 回答日時:
① イコールが押されるまで、ひたすら文字列を記録する。
② 記録した文字列のうち、()があるか無いか。あるなら()が幾つあるかを判定して、優先して計算すべき部分を判断する。
③ 優先して判断すべき部分の中から、演算子を識別して、優先して計算すべき部分を先に計算する。
④ 計算結果を置換して新たな数式とする。
⑤ この①から④を、文字が無くなって単一の数字になるまで繰り返し計算する。
このうち②の部分は難しいかもしれないから後で実装したら良い。
例
① 2 + 3 * 6 / 2 - 2 * 1
② で()無し
③ で掛け算記号あり ⇒ 優先計算
④ 掛け算記号の前後の数字は 3 と 6。掛け算をして 18
2週目
① 2 + 18 / 2 - 2 * 1
② で()無し
③ で割り算記号あり ⇒ 優先計算
④ 2 + 9 - 2 * 1
3週目
① 2 + 9 - 2 * 1
④ 2 + 9 - 2
4週目
① 2 + 9 - 2
④ 11 - 2
5週目
① 11 - 2
② 9
6週目
ループ終了
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 ピラミッド計算の仕方を教えて下さい。 5 2023/01/03 16:04
- 計算機科学 電卓で一度に計算するやり方 9 2022/06/11 14:06
- 仕事術・業務効率化 給料計算はシステムを使用してればて計算は不用ですか? 時間の計算を電卓を使用して計算する必要あります 2 2023/04/05 14:34
- 数学 冪乗の計算について教えてください 5 2023/04/22 22:36
- 時計・電卓・電子辞書 電卓は、何年使用してますか?携帯、スマホは、除く 5 2022/08/30 11:22
- 計算機科学 この計算合っていますか? 1 2022/07/28 06:27
- 時計・電卓・電子辞書 電卓 2 2023/04/20 21:44
- 夫婦 昨日旦那と口論になり、旦那にいつも使っていた電卓を壊されてしまいました。旦那はむずかしい計算をしない 5 2023/02/05 21:09
- 転職 給料計算の経験がありません。 どのような順番でどのような工程をふんで進めていきますか? システムを使 2 2023/04/05 17:54
- 時計・電卓・電子辞書 電卓 4 2022/04/29 06:26
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
CとFORTRANの計算速度はどちら...
-
プログラミング 処理速度
-
60進数の四則計算
-
再帰呼び出しの計算量
-
構文解析を利用した計算プログ...
-
数値計算の高速化 (cos, sin, exp)
-
Perlでのルートの計算
-
排他的論理和 BCC(水平パリテ...
-
Perlで時間の計算
-
DLL(VC++で作った)で稼動中の...
-
Visual C++でdebugとreleaseで...
-
「評価」「評価値」という言葉...
-
[急募]Pythonについてです。
-
10進数から8進数へ
-
VBAの再計算が反映されない件に...
-
VB6.0でのバイナリデータの扱い...
-
R言語での極小値の指数形式での...
-
円周上の3点で作られる三角形...
-
アドオン利率を実質年率に変換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
C言語の課題で、1年の秒数を計...
-
バッチファイルでウインドウを...
-
骨折リスク評価のFRAXについて...
-
変化させるセルが変化しない
-
CとFORTRANの計算速度はどちら...
-
なぜオーバーフローになるので...
-
数値計算の高速化 (cos, sin, exp)
-
モジュラス103の計算とは何でし...
-
C# 計算処理中に実行中ウィン...
-
モジュロ
-
引き放し法による除算アルゴリ...
-
60進数の四則計算
-
C言語についてです。 再帰を使...
-
Perlで時間の計算
-
CRC8を教えてください
-
傾いた四角形内の範囲の条件式
おすすめ情報