前提・実現したいこと
unityでアプリを作りたくて独学で勉強しています。
プログラミング基本の応用としてunityで、上段に式を、下段に答えを表示する電卓を作っているのですが、式で右側に表示するドットの重複の修正のやり方がわかりません。
また、なぜこうなるのか教えて頂けると助かります。
知識はC#・unityとも初心者向け書籍を数冊読んだ程度です。
ご教授お願いします。
発生している問題・エラーメッセージ
//”.”クリック3回目、"a"のクリック2回目で”.”以下のエラーが出ます。 エラーメッセージ FormatException: Input string was not in a correct format. System.Number.ParseSingle (System.String value, System.Globalization.NumberStyles options, System.Globalization.NumberFormatInfo numfmt) (at <437ba245d8404784b9fbab9b439ac908>:0) System.Single.Parse (System.String s, System.Globalization.NumberStyles style, System.Globalization.NumberFormatInfo info) (at <437ba245d8404784b9fbab9b439ac908>:0) System.Single.Parse (System.String s) (at <437ba245d8404784b9fbab9b439ac908>:0) 以下略
該当のソースコード
using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Linq; using UnityEngine.UI; using System.Text.RegularExpressions; public class Main : MonoBehaviour { public Text Formula;//式入力テキスト public Text Answer;//答えテキスト public Button[] bNumber;//数字ボタン public Button minus;//マイナスボタン public Button plus;//プラスボタン public Button dot;//ドットボタン public Button divide;//割るボタン public Button rate;//割合ボタン public Button hung;//掛けるボタン public Button breturn;//1つ戻るボタン public Button equal;//イコールボタン public Button clear;//クリアボタン // Start is called before the first frame update void Start() { Formula.text = ""; Answer.text = ""; } char[] c = new char[] {'+', '-', '×', '÷', '%' }; //中略 public void InputDot(Text dotButton)//ドット { if (Formula.text.Contains("-") || Formula.text.Contains("+") || Formula.text.Contains("÷") || Formula.text.Contains("×") || Formula.text.Contains("%")) { string[] inputString = Formula.text.Split(c);//Splitで記号で分割 float rightNumber = float.Parse(inputString[1]);//記号より右の数字を取り出す string rig = rightNumber.ToString();//右の数字flostを文字列stringに変換 if (rig.Contains("."))//右側の数字にドットがあればスルー、なければ記入 { return; } else { Formula.text += "."; return; } } else if (Formula.text ==""|| Formula.text.Contains("."))//何もない時又は"."がある時は記入しない { return; } else { Formula.text += dotButton.text; return; } } //以下略 }
試したこと
if (rig.Contains("a"))//右側の数字にドットがあればスルー、なければ記入 { return; } else { Formula.text += "a"; return; }
”.”の部分を”a”にすると”3.3+3a3”となり重複しませんが、2クリック目に上記のエラーがでます。
この変化の理由がわかりません。
補足情報(FW/ツールのバージョンなど)
unity2019.3 1f1personal
visual studio2017 15.9.16l
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/30 10:00 編集