文系エンジニアのぐん(@gunjiblog)です!
C#で電卓アプリを作ってみたので、ソースコードを載せたいと思います!
C#始めて一週間で作ったものなので、不備あったらごめんなさい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | 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 WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } bool isFirst = true; double val1 = 0; private void Form1_Load(object sender, EventArgs e) { } private void btnNumber_Click(object sender, EventArgs e) { if (isFirst) { txtDisplay.Text = ""; isFirst = false; } String text = txtDisplay.Text + ((Button)sender).Text; //文字列 -> 数値 double d = Convert.ToDouble(text); //数値 -> 文字列(先頭の0が消える) String text2 = d.ToString(); txtDisplay.Text = text2; } enum sign { blank, ADD, SUB, MUL, DIV }; sign exec = sign.blank; //クリア private void button_clear_Click(object sender, EventArgs e) { exec = sign.blank; txtDisplay.Text = "0"; val1 = 0; isFirst = true; } //小数点 private void button_dot_Click(object sender, EventArgs e) { //小数点の重複チェック if(txtDisplay.Text.IndexOf(".") >= 1) { //すでに小数点がある return; } txtDisplay.Text = txtDisplay.Text + "."; } //足し算。 private void button_tasu_Click(object sender, EventArgs e) { //if (!isFirst) calc(); exec = sign.ADD; } //引き算。 private void button_hiku_Click(object sender, EventArgs e) { //if (!isFirst) calc(); exec = sign.SUB; } //掛け算。 private void button_kakuru_Click(object sender, EventArgs e) { //if (!isFirst) calc(); exec = sign.MUL; } //割り算。 private void button_waru_Click(object sender, EventArgs e) { //if (!isFirst) calc(); exec = sign.DIV; } //イコール。 private void button_wa_Click(object sender, EventArgs e) { bool res = calc("123"); } private bool calc(string str) { double val2; //val2 = double.Parse(txtDisplay.Text); bool res = double.TryParse(str, out val2); if (res == true) { } else { return false; } try { val2 = double.Parse(txtDisplay.Text); } catch (Exception) { Console.WriteLine("エラーです。"); return false; } switch (exec) { case sign.ADD: val1 += val2; break; case sign.SUB: val1 -= val2; break; case sign.MUL: val1 *= val2; break; case sign.DIV: val1 /= val2; break; default: val1 = val2; break; } double result = Math.Truncate(val1 * 100) / 100; txtDisplay.Text = result.ToString(); isFirst = true; return true; } } } |