
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ランキング
-
matlabでの右軸plot
-
Perlでのルートの計算
-
めちゃきれい
-
MathematicaのNDSolveで連立常...
-
(汎用的に)行列の積を求める...
-
機械の扱える最も0に近い実数は?
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
移動平均を計算するプログラム
-
パイソン。前の計算が、後の関...
-
チェス 論理クイズ
-
【fortran77】データ行数のカウ...
-
POSTを使って、アプリを操作したい
-
エクセル以外で麻雀の成績を管...
-
正しい五十音順について
-
銃を発砲するならともかく、日...
-
方対数グラフを書く為の計算方...
-
javaからAS400のプログラム起動
-
OS入ってる機器のソフト・アプ...
-
ニュースを取得してホームペー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
変化させるセルが変化しない
-
エクセルで特定のセルのみを任...
-
CとFORTRANの計算速度はどちら...
-
モジュロ
-
バッチファイルでウインドウを...
-
Visual C++でdebugとreleaseで...
-
y=(x^2 +3x+1)^4を微分の定義を...
-
入射角反射角
-
スレッド処理からダイアログを...
-
60進数の四則計算
-
Javaと他言語比較について
-
VBAで関数をつくる
-
C言語 Σをつかったプログラム
-
CRC8を教えてください
-
C言語についてです。 再帰を使...
-
C言語について 下の画像は do-w...
おすすめ情報