我正在使用 C# 设计计算器,但出现编译器错误 CS0029
I am using C# to design a calcuator and i get Complie Error CS0029
所以对于我的家庭作业,我被要求设计一个功能齐全的计算器,它接受按键和按钮点击,但是对于数字 0-9 按钮点击事件,我得到编译错误消息:CS0029:无法隐式转换类型 'int' 到 'string'
这是代码
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 Calculator
{
public partial class Form1 : Form
{
private String calculatedNumber; // Stores numbers in string form
private Boolean dot = false; // Falg: to control when a dot can be placed in a number
public Form1()
{
InitializeComponent();
}
private void BtnZero_Click(object sender, EventArgs e) //adds 0 to string
{
//calculatedNumber = Convert.ToString(0);
if (calculatedNumber = 0)
{
LblDisplay.Text=calculatedNumber;
}
else
{
}
}
private void BtnOne_Click(object sender, EventArgs e) //adds 1 to string
{
if (calculatedNumber = 1)
{
calculatedNumber = 1.ToString();
LblDisplay.Text = calculatedNumber;
}
else
{
}
}
private void BtnTwo_Click(object sender, EventArgs e) //adds 2 to string
{
if (calculatedNumber = 2)
{
LblDisplay.Text = calculatedNumber;
}
else
{
}
}
private void BtnThree_Click(object sender, EventArgs e) //adds 3 to string
{
if (calculatedNumber = 3)
{
LblDisplay.Text = calculatedNumber;
}
else
{
}
}
private void BtnFour_Click(object sender, EventArgs e) //adds 4 to string
{
if (calculatedNumber = 4)
{
LblDisplay.Text = calculatedNumber;
}
else
{
}
}
private void button5_Click(object sender, EventArgs e) //adds 5 to string
{
if (calculatedNumber = 5)
{
LblDisplay.Text = calculatedNumber;
}
else
{
}
}
private void BtnSix_Click(object sender, EventArgs e) //adds 6 to string
{
if (calculatedNumber = 6)
{
LblDisplay.Text = calculatedNumber;
}
else
{
}
}
private void BtnSeven_Click(object sender, EventArgs e) //adds 7 to string
{
if (calculatedNumber = 7)
{
LblDisplay.Text = calculatedNumber;
}
else
{
}
}
private void BtnEight_Click(object sender, EventArgs e) //adds 8 to string
{
if (calculatedNumber = 8)
{
LblDisplay.Text = calculatedNumber;
}
else
{
}
}
private void BtnNine_Click(object sender, EventArgs e) //adds 9 to string
{
calculatedNumber = 9.ToString();
if (calculatedNumber = 9)
{
LblDisplay.Text = calculatedNumber;
}
else
{
}
}
private void BtnDot_Click(object sender, EventArgs e) //adds . to string
{
if (!dot)
{
calculatedNumber += ".";
dot = true;
}
LblDisplay.Text = calculatedNumber;
}
我做错了什么?
PS: 我是 C# 新手
您从所有 if
语句中收到错误消息 "Cannot implicitly convert type 'int' to 'string'"。您应该传递一个 returns a bool
的表达式。但是,您试图将一个 int 分配给 calculatedNumber
这是一个字符串。但是你的意思是检查相等性,它是 ==
而不是 =
.
将所有 if
语句更改为:
if (calculatedNumber == "0") //or whatever number
但是在您的代码中 calculatedNumber
似乎从来没有在任何地方设置过,所以永远不会是真的。
因为每个按钮都有动作侦听器,所以整个 if
部分是多余的。你可以只拥有:
private void BtnOne_Click(object sender, EventArgs e) //adds 1 to string
{
LblDisplay.Text = "1";
}
然而,这似乎仍然不是您想要的功能,因为它会在您每次单击新号码时替换号码,您可能想像这样附加它:
private void BtnOne_Click(object sender, EventArgs e) //adds 1 to string
{
LblDisplay.Text = LblDisplay.Text + "1";
}
所以对于我的家庭作业,我被要求设计一个功能齐全的计算器,它接受按键和按钮点击,但是对于数字 0-9 按钮点击事件,我得到编译错误消息:CS0029:无法隐式转换类型 'int' 到 'string'
这是代码
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 Calculator
{
public partial class Form1 : Form
{
private String calculatedNumber; // Stores numbers in string form
private Boolean dot = false; // Falg: to control when a dot can be placed in a number
public Form1()
{
InitializeComponent();
}
private void BtnZero_Click(object sender, EventArgs e) //adds 0 to string
{
//calculatedNumber = Convert.ToString(0);
if (calculatedNumber = 0)
{
LblDisplay.Text=calculatedNumber;
}
else
{
}
}
private void BtnOne_Click(object sender, EventArgs e) //adds 1 to string
{
if (calculatedNumber = 1)
{
calculatedNumber = 1.ToString();
LblDisplay.Text = calculatedNumber;
}
else
{
}
}
private void BtnTwo_Click(object sender, EventArgs e) //adds 2 to string
{
if (calculatedNumber = 2)
{
LblDisplay.Text = calculatedNumber;
}
else
{
}
}
private void BtnThree_Click(object sender, EventArgs e) //adds 3 to string
{
if (calculatedNumber = 3)
{
LblDisplay.Text = calculatedNumber;
}
else
{
}
}
private void BtnFour_Click(object sender, EventArgs e) //adds 4 to string
{
if (calculatedNumber = 4)
{
LblDisplay.Text = calculatedNumber;
}
else
{
}
}
private void button5_Click(object sender, EventArgs e) //adds 5 to string
{
if (calculatedNumber = 5)
{
LblDisplay.Text = calculatedNumber;
}
else
{
}
}
private void BtnSix_Click(object sender, EventArgs e) //adds 6 to string
{
if (calculatedNumber = 6)
{
LblDisplay.Text = calculatedNumber;
}
else
{
}
}
private void BtnSeven_Click(object sender, EventArgs e) //adds 7 to string
{
if (calculatedNumber = 7)
{
LblDisplay.Text = calculatedNumber;
}
else
{
}
}
private void BtnEight_Click(object sender, EventArgs e) //adds 8 to string
{
if (calculatedNumber = 8)
{
LblDisplay.Text = calculatedNumber;
}
else
{
}
}
private void BtnNine_Click(object sender, EventArgs e) //adds 9 to string
{
calculatedNumber = 9.ToString();
if (calculatedNumber = 9)
{
LblDisplay.Text = calculatedNumber;
}
else
{
}
}
private void BtnDot_Click(object sender, EventArgs e) //adds . to string
{
if (!dot)
{
calculatedNumber += ".";
dot = true;
}
LblDisplay.Text = calculatedNumber;
}
我做错了什么? PS: 我是 C# 新手
您从所有 if
语句中收到错误消息 "Cannot implicitly convert type 'int' to 'string'"。您应该传递一个 returns a bool
的表达式。但是,您试图将一个 int 分配给 calculatedNumber
这是一个字符串。但是你的意思是检查相等性,它是 ==
而不是 =
.
将所有 if
语句更改为:
if (calculatedNumber == "0") //or whatever number
但是在您的代码中 calculatedNumber
似乎从来没有在任何地方设置过,所以永远不会是真的。
因为每个按钮都有动作侦听器,所以整个 if
部分是多余的。你可以只拥有:
private void BtnOne_Click(object sender, EventArgs e) //adds 1 to string
{
LblDisplay.Text = "1";
}
然而,这似乎仍然不是您想要的功能,因为它会在您每次单击新号码时替换号码,您可能想像这样附加它:
private void BtnOne_Click(object sender, EventArgs e) //adds 1 to string
{
LblDisplay.Text = LblDisplay.Text + "1";
}