プログラミングを学び始めて一か月の者です。
C#で電卓を作成しています。
作り方を調べながら進めているのですが、
一度目の計算が終わってから「C」を押して履歴をクリアし
次の計算に進もうとすると、最初に打ち込んだ数字が1~9の
どの数字でも「0」の判定になってしまいます。
(1+5をしたくても0+5の計算がされてしまう)
該当のソースコードは下記になります。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace 電卓 { public partial class Window : Form { public Window() { InitializeComponent(); } string Input_str = ""; //入力された数字 double Result = 0; //計算結果 string Operator = null; //押された演算子 string History_str = ""; //クラス変数を追加 private void button0to9_Click(object sender, EventArgs e) { Button btn = (Button)sender; //senderの詳しい情報を取り扱えるようにする string text = btn.Text; //押されたボタンの数字(または小数点の記号) Input_str += text; //入力された文字に連結する textBox1.Text = Input_str; //画面上に数字を出す History_str += btn.Text; //押されたボタンの数字をテキストボックス2に表示 textBox2.Text = History_str; } private void buttonOperator_Click(object sender, EventArgs e) { double num1 = Result; double num2; //入力された文字が空欄なら計算をスキップする if (Input_str != "") { //入力した文字を数字に変換 num2 = double.Parse(Input_str); //四則演算 if (Operator == "+") { Result = num1 + num2; } if (Operator == "-") { Result = num1 - num2; } if (Operator == "*") { Result = num1 * num2; } if (Operator == "/") { Result = num1 / num2; } //演算子を押されていなかった場合、入力されている文字をそのまま結果扱いにする if (Operator == null) { Result = num2; } //画面に結果を表示する textBox1.Text = Result.ToString(); //今入力されている数字をリセットする Input_str = ""; //演算子をOperator変数に入れる Button btn = (Button)sender; Operator = btn.Text; //演算子をテキストボックス2に連結して表示 History_str += Operator; textBox2.Text = History_str; //"="の処理 if (Operator == "=") { Operator = ""; History_str = Result.ToString(); textBox2.Text = History_str; } } } private void buttonC_Click(object sender, EventArgs e) { Result = 0; Input_str = ""; textBox1.Text = "0"; History_str = ""; textBox2.Text = ""; } } }
また、連続した計算の際、「C」を押した後に1~9の数字ではなく、
最初の数字に0を入力しようとすると、エラーが出ます。
num2 = double.Parse(Input_str); System.FormatException: '入力文字列の形式が正しくありません。'
どなたかご助言いただけたら幸いです。よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
VisualStudio2017
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/15 00:05