#6
by ひかり » 8年前
返信が遅くなり、申し訳ありません。
少しずつ理解はできつつあるのですが…もうしばらく、お付き合いお願いいたします。
現在、足し算は問題なく機能しております。
ですが、引き算をする際に「9 - 1 - 1 = 7」まではいいのですが、
クリアボタン(btnC)を押して、新しく計算しようとすると
「9 -」と入力した時点で答えが「- 9」となってしまい、「9 - 9 = -18」と表示されます。
また、掛け算と割り算はクリアボタンを入れると、
どの数字を入れて計算しようとしても「0」と表示されてしまいます。
※液晶にあたる部分をTextBoxで作り「txtDisplay」と名づけてあります。
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 Cal
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
bool isFirst = true;
decimal 値1 = 0;
//0~9までの数字。
private void btnNumber_Click(object sender, EventArgs e)
{
if (isFirst)
{
txtDisplay.Text = "";
isFirst = false;
}
String text = txtDisplay.Text + ((Button)sender).Text;
decimal d = Convert.ToDecimal(text);
String text2 = d.ToString();
txtDisplay.Text = text2;
}
//クリア。
private void btnC_Click(object sender, EventArgs e)
{
txtDisplay.Text = "0";
値1 = 0;
isFirst = true;
}
enum 四則演算の記号 { 未定義, ADD, SUB, MUL, DIV };
四則演算の記号 演算 = 四則演算の記号.未定義;
//足し算。
private void btnAdd_Click(object sender, EventArgs e)
{
if (!isFirst) calc();
演算 = 四則演算の記号.ADD;
}
//引き算。
private void btnSub_Click(object sender, EventArgs e)
{
if (!isFirst) calc();
演算 = 四則演算の記号.SUB;
}
//掛け算。
private void btnMul_Click(object sender, EventArgs e)
{
if (!isFirst) calc();
演算 = 四則演算の記号.MUL;
}
//割り算。
private void btnDiv_Click(object sender, EventArgs e)
{
if (!isFirst) calc();
演算 = 四則演算の記号.DIV;
}
//イコール。
private void btnEqu_Click(object sender, EventArgs e)
{
calc();
}
private void calc()
{
decimal 値2 = Convert.ToDecimal(txtDisplay.Text);
switch (演算)
{
case 四則演算の記号.ADD:
値1 += 値2;
break;
case 四則演算の記号.SUB:
値1 -= 値2;
break;
case 四則演算の記号.MUL:
値1 *= 値2;
break;
case 四則演算の記号.DIV:
値1 /= 値2;
break;
default:
値1 = 値2;
break;
}
txtDisplay.Text = 値1.ToString();
isFirst = true;
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
よろしくお願いいたします。
返信が遅くなり、申し訳ありません。
少しずつ理解はできつつあるのですが…もうしばらく、お付き合いお願いいたします。
現在、足し算は問題なく機能しております。
ですが、引き算をする際に「9 - 1 - 1 = 7」まではいいのですが、
クリアボタン(btnC)を押して、新しく計算しようとすると
「9 -」と入力した時点で答えが「- 9」となってしまい、「9 - 9 = -18」と表示されます。
また、掛け算と割り算はクリアボタンを入れると、
どの数字を入れて計算しようとしても「0」と表示されてしまいます。
※液晶にあたる部分をTextBoxで作り「txtDisplay」と名づけてあります。
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 Cal
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
bool isFirst = true;
decimal 値1 = 0;
//0~9までの数字。
private void btnNumber_Click(object sender, EventArgs e)
{
if (isFirst)
{
txtDisplay.Text = "";
isFirst = false;
}
String text = txtDisplay.Text + ((Button)sender).Text;
decimal d = Convert.ToDecimal(text);
String text2 = d.ToString();
txtDisplay.Text = text2;
}
//クリア。
private void btnC_Click(object sender, EventArgs e)
{
txtDisplay.Text = "0";
値1 = 0;
isFirst = true;
}
enum 四則演算の記号 { 未定義, ADD, SUB, MUL, DIV };
四則演算の記号 演算 = 四則演算の記号.未定義;
//足し算。
private void btnAdd_Click(object sender, EventArgs e)
{
if (!isFirst) calc();
演算 = 四則演算の記号.ADD;
}
//引き算。
private void btnSub_Click(object sender, EventArgs e)
{
if (!isFirst) calc();
演算 = 四則演算の記号.SUB;
}
//掛け算。
private void btnMul_Click(object sender, EventArgs e)
{
if (!isFirst) calc();
演算 = 四則演算の記号.MUL;
}
//割り算。
private void btnDiv_Click(object sender, EventArgs e)
{
if (!isFirst) calc();
演算 = 四則演算の記号.DIV;
}
//イコール。
private void btnEqu_Click(object sender, EventArgs e)
{
calc();
}
private void calc()
{
decimal 値2 = Convert.ToDecimal(txtDisplay.Text);
switch (演算)
{
case 四則演算の記号.ADD:
値1 += 値2;
break;
case 四則演算の記号.SUB:
値1 -= 値2;
break;
case 四則演算の記号.MUL:
値1 *= 値2;
break;
case 四則演算の記号.DIV:
値1 /= 値2;
break;
default:
値1 = 値2;
break;
}
txtDisplay.Text = 値1.ToString();
isFirst = true;
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
よろしくお願いいたします。