私は宿題に取り組んでおり、この割り当てでスターター コードが与えられました。私たちは以前に行ったクラスに取り組んでおり、圧倒されているようです。スターター コードは私を混乱させます。個人的には、自分で割り当てを開始したほうがよかったでしょう。それについていくつか質問があります。誰かが私が解釈するのを手伝ってくれないかと思っていました。
私が持っている最大の質問は非常に簡単です。電卓を持っている場合は、最初の数字があり、次に 2 番目の数字があります。したがって、ユーザーが 1 + 1 を入力すると、基本的に数字が表示されます。与えられたコードには、firstNumber と secondNumber のようなものはありません。代わりに、これを正しく理解している場合、displayValue と currentValue (?) があります。これらの値がどのように保存されているのか完全にはわかりません。
それは本当に私が見つけようとしているものであり、入力された実際の数値がプログラムのように保存されていることに夢中になっているため、クラスを適切にコーディングしているかどうか。
提供されたコードは次のとおりです。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Calculator
{
public partial class frmCalculator : Form
{
public frmCalculator()
{
InitializeComponent();
}
// The following fields are used to store the value that's currently
// displayed by the calculator. displayString is a string value that's
// constructed as the user clicks numeric keys and the decimal and +/-
// key. The Convert.ToDecimal method is then used to convert this to a decimal
// field that's stored in displayValue.
private string displayString;
private decimal displayValue;
// The following bool fields are used to control numeric entry.
// newValue indicates whether the calculator is ready to receive a
// new numeric value. Once the user clicks a digit button, newValue is
// set to false. When the user clicks a button that "enters" the value,
// such as Add or Equals, newValue is set to true so the user can enter
// another value.
// decimalEntered is used to restrict the entry to a single decimal point.
// It is set to true whenever newValue is set to true, and it is set to
// false whenever the user clicks the decimal point button.
private bool newValue;
private bool decimalEntered;
private Calculator calc = new Calculator();
private void Form1_Load(object sender, System.EventArgs e)
{
displayValue = 0;
displayString = displayValue.ToString();
newValue = true;
decimalEntered = false;
}
// This method handles the 0 through 9 keys, appending the digit clicked
// to the displayString field.
private void btnNumber_Click(object sender, System.EventArgs e)
{
if (newValue)
{
displayString = "";
newValue = false;
}
displayString += ((Button)sender).Tag.ToString();
displayValue = Convert.ToDecimal(displayString);
txtDisplay.Text = displayValue.ToString();
}
// This method removes the last character from the displayString field.
private void btnBackSpace_Click(object sender, System.EventArgs e)
{
if (displayString.Length > 1)
{
displayString = displayString.Substring(0, displayString.Length - 1);
displayValue = Convert.ToDecimal(displayString);
txtDisplay.Text = displayValue.ToString();
}
else
{
displayString = "";
displayValue = 0;
txtDisplay.Text = displayValue.ToString();
}
}
private void btnClear_Click(object sender, System.EventArgs e)
{
calc.Clear();
displayString = "";
displayValue = 0;
txtDisplay.Text = displayValue.ToString();
newValue = true;
decimalEntered = false;
}
// This method appends a decimal point to the displayString field if the
// user has not already entered a decimal point.
private void btnDecimal_Click(object sender, System.EventArgs e)
{
if (newValue)
{
displayString = "0";
newValue = false;
}
if (!decimalEntered)
{
displayString += ".";
displayValue = Convert.ToDecimal(displayString);
txtDisplay.Text = displayValue.ToString();
decimalEntered = true;
}
}
private void btnSign_Click(object sender, System.EventArgs e)
{
displayValue = -displayValue;
txtDisplay.Text = displayValue.ToString();
}
private void btnAdd_Click(object sender, System.EventArgs e)
{
calc.Add(displayValue);
newValue = true;
decimalEntered = false;
displayValue = calc.CurrentValue;
txtDisplay.Text = displayValue.ToString();
}
private void btnSubtract_Click(object sender, System.EventArgs e)
{
calc.Subtract(displayValue);
newValue = true;
decimalEntered = false;
displayValue = calc.CurrentValue;
txtDisplay.Text = displayValue.ToString();
}
private void btnMultiply_Click(object sender, System.EventArgs e)
{
calc.Multiply(displayValue);
newValue = true;
decimalEntered = false;
displayValue = calc.CurrentValue;
txtDisplay.Text = displayValue.ToString();
}
private void btnDivide_Click(object sender, System.EventArgs e)
{
calc.Divide(displayValue);
newValue = true;
decimalEntered = false;
displayValue = calc.CurrentValue;
txtDisplay.Text = displayValue.ToString();
}
//private void btnSqrt_Click(object sender, System.EventArgs e)
//{
// calc.SquareRoot(displayValue);
//displayValue = calc.CurrentValue;
//txtDisplay.Text = displayValue.ToString();
//}
//private void btnReciprocal_Click(object sender, System.EventArgs e)
//{
// try
// {
// calc.Reciprocal(displayValue);
// displayValue = calc.CurrentValue;
//txtDisplay.Text = displayValue.ToString();
//}
//catch (DivideByZeroException)
//{
// displayValue = 0;
// txtDisplay.Text = "Cannot divide by zero.";
//newValue = true;
//decimalEntered = false;
//}
}
private void btnEquals_Click(object sender, System.EventArgs e)
{
try
{
if (newValue)
calc.Equals();
else
calc.Equals(displayValue);
displayValue = calc.CurrentValue;
txtDisplay.Text = displayValue.ToString();
newValue = true;
decimalEntered = false;
}
catch (DivideByZeroException)
{
displayValue = 0;
txtDisplay.Text = "Cannot divide by zero.";
newValue = true;
decimalEntered = false;
}
}
}
}
次に、クラスのサンプル (スペースと時間を節約するために、オペランドの 1 つだけを実行します)
namespace Calculator
{
public class Calculator
{
public Decimal displayValue;
public Decimal currentValue;
public Decimal firstNumber;
public Decimal secondNumber;
public decimal Add(Decimal displayValue)
{
return displayValue + currentValue;
}
そして、 currentValue がなく、それが参照 displayValue であると想定しているクラスから来ているので、私は想定していますか? それがユーザーが入力したものに戻るのか、それとも基本的に繰り返されるのかはわかりませんが?(それが理にかなっている場合...しかし、この部分で私がどのように混乱しているかがわかります)。
本当にそうです、私はそれを解釈してくれる人を探していて、それを正しく理解し、正しい方向に進んでいるかどうかを教えてください...そうでなければ、私はめちゃくちゃだと思います....
前もって感謝します。