我是新手C#编码员,目前正在研究反向抛光记谱计算器。我创建了一个将负责计算的方法,但我的代码中有三行导致错误。执行每个=
操作然后显示。我试图从TxtInputBox
中获取字符串并转换为整数,但下面的行是我获得红色波浪线的地方:string[] inputarray = TxtBoxInputbox.Text.Split();
。第二,当从按钮单击Btn_Calc
调用函数RPNCalc并分配textBoxes时,我收到另一条红色波浪线:RPNCalc(TxtInputBox, TxtOutputBox);
我不知道如何处理这两个错误导致我的表单无法工作。请帮助制作无错误。
代码
namespace rpncalc
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void RPNCalc(TxtBoxInputbox, TxtBoxOutputbox)
{
Stack<int> stackone = new Stack<int>();
stackone.Clear();
string[] inputarray = TxtBoxInputbox.Text.Split();
int end = inputarray.Length - 1;
int numinput;
int i = 0;
do
{
if(inputarray[i] != "=" && inputarray[i] != "+" && inputarray[i] != "-" && inputarray[i] != "*" && inputarray[i] != "/")
{
try
{
numinput = Convert.ToInt32(inputarray[i]);
stackone.Push(numinput);
}
catch
{
MessageBox.Show("Please check the input");
}
}
else if (inputarray[i]== "+")
{
try
{
int store1 = stackone.Pop();
int store2 = stackone.Pop();
stackone.Push(store2 + store1);
}
catch
{
}
}
else if (inputarray[i]== "-")
{
try
{
int store1 = stackone.Pop();
int store2 = stackone.Pop();
stackone.Push(store2 + store1);
}
catch
{
}
}
else if (inputarray[i]== "+")
{
try
{
int store1 = stackone.Pop();
int store2 = stackone.Pop();
stackone.Push(store2 + store1);
}
catch
{
}
}
else if (inputarray[i]== "*")
{
try
{
int store1 = stackone.Pop();
int store2 = stackone.Pop();
stackone.Push(store2 + store1);
}
catch
{
}
}
else if (inputarray[i]== "/")
{
try
{
int store1 = stackone.Pop();
int store2 = stackone.Pop();
stackone.Push(store2 + store1);
}
catch
{
}
}
}
while(i < end && inputarray[i]!= "=" && stackone.Count != 0);
string txtout = TxtInputBox + " " + stackone.Pop().ToString() + Environment.NewLine;
TxtOutputBox.AppendText(txtout);
TxtInputBox.Clear();
}
private void Btn_Calc_Click(object sender, EventArgs e)
{
RPNCalc(TxtInputBox, TxtOutputBox);
}
}
}
答案 0 :(得分:2)
您的RPNCalc
方法签名缺少参数类型。你的意思是:
private void RPNCalc(TextBox TxtBoxInputbox, TextBox TxtBoxOutputbox)
附注,由于RPNCalc
是表单的成员函数,因此它已经可以访问成员this.TxtBoxInputbox
和this.TxtBoxOutputbox
。所以你根本不需要传递任何参数。
虽然我们讨论的是主题,如果它是我的代码,我可能会重写整个方法而不使用参数,返回一个int(即private int RPNCalc()
),它会占用this.TxtBoxInputbox
中的任何内容,做计算,并返回结果。然后,调用方法可以对结果执行它想要的操作(在这种情况下,将其添加到输出中)。但是,这确实超出了原始问题的范围。