我一直在研究一个程序,它可以从化学公式中计算分子量。到目前为止,它运行得很好,直到这个错误发生。我想做一个把化学式分开的数组(它工作得很好)。从这里开始,我想进行一个方法调用,将数组发送到另一个方法。在这里,它被用于从化学公式中的元素中计算分子量,并将其添加到一个新的列表中。然后将列表返回到第一个方法。下面是代码(只显示一个元素或代码变得太大);
private void Textbox1_TextChanged(object sender, EventArgs e)
{
string input = Textbox1.Text;
string pattern = @"([A-Z][a-z]?\d*|[A-Z]?\d*)";
string[] substrings = Regex.Split(input, pattern);
MoleculeweightCalculator(substrings);
Textbox2.Text = Convert.ToString(MoleculeWeightList.Sum());
}
private static MoleculeweightCalculator(string[] substrings)
{
List<double> MoleculeWeightList = new List<double>();
foreach (string match in substrings)
{
if (match == "H")
{
MoleculeWeightList.Add(1.008);
}
}
return MoleculeWeightList;
}问题是,它不允许我将数组发送到另一个方法,并再次将列表返回给第一个方法。有什么不对吗?或者如何解决这个问题?
发布于 2015-01-15 19:24:27
您的代码中有许多错误,return必须是小写的,您应该将它放在循环之外,然后返回类型就会丢失。此外,您没有存储返回的数据。
这至少应汇编:
private void Textbox1_TextChanged(object sender, EventArgs e){
string input = Textbox1.Text;
string pattern = @"([A-Z][a-z]?\d*|[A-Z]?\d*)";
string[] substrings = Regex.Split(input, pattern);
var result = MoleculeweightCalculator(substrings);
Textbox2.Text = Convert.ToString(result.Sum());
}
private static List<double> MoleculeweightCalculator(string[] substrings){
List<double> MoleculeWeightList = new List<double>();
foreach (string match in substrings){
if (match == "H")
MoleculeWeightList.Add(1.008);
}
return MoleculeWeightList;
}发布于 2015-01-15 19:17:45
实际上,您没有使用返回值。MoleculeWeightList变量是该函数的本地变量,更具体地说,它是作用域的本地变量,不能在其外部使用。但是因为你return它,你可以这样做:
List<double> weightList = MoleculeweightCalculator(substrings);
Textbox2.Text = Convert.ToString(weightList.Sum());将返回值分配给调用方法中的局部变量,然后可以在方法中稍后使用。
https://stackoverflow.com/questions/27971238
复制相似问题