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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1950閲覧

電卓アプリの括弧機能について

fjaiofjawiefjaw

総合スコア210

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/05/14 17:56

私の使っている計算機アプリは括弧を自動的に便利な形でつけてくれます。
アプリの括弧ボタンは'()'のように開き括弧と閉じ括弧が一緒になった
アイコンを使用していますので、開き括弧と閉じ括弧のどちらを付けるかは、
アプリ側で判断しなければなりません。

以下、使用例です。
何も書いてない状態で押した場合。
(
さらに2回押した場合。
(((
数字だけ、もしくは数字と演算子と数字を記入後、押した場合。
(((7)
(((5+5)
さらに2回押した場合。
(((7)))
(((5+5)))
ここから、さらにもう1回押した場合。(掛ける記号と開き括弧が付きます。)
(((7)))(
(((5+5)))
(

下のように実装しました。愚直に括弧の数を調べて
閉じ括弧が開き括弧より少なければ、閉じ括弧を追加する。
同じ数なら掛ける演算子と開き括弧を付ける形にしました。
皆様ならどのようにやりますでしょうか?

javascript

1$("#brackets_btn").click(function() { 2 var prev = $("#input").text(); 3 switch (bracketsCheck(prev)) { 4 case BRACKETS.OPEN: 5 $("#input").text(prev + "("); 6 break; 7 case BRACKETS.CLOSE: 8 $("#input").text(prev + ")"); 9 break; 10 case BRACKETS.MULTI: 11 $("#input").text(prev + "*("); 12 break; 13 default: 14 } 15}); 16 17function bracketsCheck(prev) { 18 if(prev === "") return BRACKETS.OPEN; 19 if(prev.endsWith('(') === true) return BRACKETS.OPEN; 20 if(/[\+\*\-\/]$/.test(prev) === true) return BRACKETS.OPEN; 21 var arr = /\(+[\d\+\-\*\/\)]+$/.exec(prev); 22 var brac_cnt_obj = getBracketsCount(arr[0]); 23 if(brac_cnt_obj.open > brac_cnt_obj.close) return BRACKETS.CLOSE; 24 if(brac_cnt_obj.open === brac_cnt_obj.close) return BRACKETS.MULTI; 25} 26

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

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

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

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

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

guest

回答2

0

()に分離します。

((1+1)

この次に付けるべきかっこが自動判別できません。

投稿2017/05/14 23:43

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

自己解決

質問をしておいて、申し訳ありませんが、
これ以外に答えはなさそうなので、解答いただかなくて大丈夫です。

投稿2017/05/14 18:04

fjaiofjawiefjaw

総合スコア210

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問