namespace Calculator
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Calculate_Click(object sender, EventArgs e)
{
int num1 = Convert.ToInt32(Number1.Text);
int num2 = Convert.ToInt32(Number2.Text);
int result = 0;
string resultString = Convert.ToString(result);
if (Addition.Checked == true)
{
result = num1 + num2;
resultBox.Text = resultString;
}
else if (Subtraction.Checked == true)
{
result = num1 - num2;
resultBox.Text = resultString;
}
else if (Multiplication.Checked == true)
{
result = num1 * num2;
resultBox.Text = resultString;
}
else
{
resultBox.Text = "Error, no parameter selected";
}
}
}
}
我很确定大部分是正确的,似乎正在转变让我绊倒。我是C#的新手(第一天!)所以我有点困惑。也是本网站上的第一篇文章,对于任何格式问题都很抱歉。
答案 0 :(得分:2)
尝试转换为数字听起来像是一个问题。不要使用.cpp
,而是尝试使用Convert.ToInt32()
:
TryParse()
您的代码中的另一个问题是您在解析结果之前转换int num1;
int num2;
bool isNum1Valid = int.TryParse(Number1.Text, out num1);
bool isNum2Valid = int.TryParse(Number2.Text, out num2);
if (!isNum1Valid)
{
// num1 is invalid. Throw an error message or something
}
if (!isNum2Valid)
{
// num2 is invalid. Throw an error message or something
}
。在进行计算后使用此行:
ResultString
答案 1 :(得分:1)
Icemanind
的解决方案非常好,但您可以考虑不允许用户从头开始输入错误的数字(类似于数字文本框)。显示了几个解决方案here:
private void FirstNumber_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar);
}
此外,您应该考虑溢出(*可能很容易通过Int32.MaxValue获取足够大的数字),因为它可能会导致意外结果,如here所示:
try
{
checked
{
// may be used for all operations
int product = num1 * num2;
}
}
catch(OverflowException ex)
{
resultBox.Text = "Integer operation overflow";
}
OR
将产品声明为Int64
,以确保其适应所有可能的结果。
因此,您几乎可以确定文本框中包含有效数字。
答案 2 :(得分:0)
在尝试转换之前,请务必检查空值或空值。
if(String.IsNullOrEmptry(Number2.Text))
num2 = 0;
else
num2 = Convert.ToInt32(Number2.Text);
您还在转换'结果'到' resultString'在您设置“结果”的答案之前。'你应该移动
resultBox.Text = resultString;
在if-else块下方。
答案 3 :(得分:0)
您应该在计算后放置string resultString = Convert.ToString(result);
private void Calculate_Click(object sender, EventArgs e)
{
int num1 = Number1.Text==""?0:Convert.ToInt32(Number1.Text);
int num2 = Number2.Text==""?0:Convert.ToInt32(Number2.Text);
int result = 0;
if (Addition.Checked == true)
{
result = num1 + num2;
}
else if (Subtraction.Checked == true)
{
result = num1 - num2;
}
else if (Multiplication.Checked == true)
{
result = num1 * num2;
}
else
{
resultBox.Text = "Error, no parameter selected";
}
string resultString = Convert.ToString(result);
resultBox.Text = resultString;
}