对不起,我是编码的新手,在尝试一切之后我无法弄清楚这一点!我有6个屏蔽文本框,用户输入分贝值,应该将它们保存到列表中,将每个输入到公式中并输出求和的分贝值,但它只是将变量添加为6,这是计数列表而不是实际值.当我尝试一个foreach循环时,它使它成为一个无限循环.
private void dBAddButton_Click(object sender, EventArgs e)
{
List<double> addDBList = new List<double>();
double final;
double added = 0;
addDBList.Add(double.Parse((dB1.Text)));
addDBList.Add(double.Parse((dB2.Text)));
addDBList.Add(double.Parse((dB3.Text)));
addDBList.Add(double.Parse((dB4.Text)));
addDBList.Add(double.Parse((dB5.Text)));
addDBList.Add(double.Parse((dB6.Text)));
for (int i = 0; i < addDBList.Count; i++)
{
added += Math.Pow(10, (i / 10));
}
final = 10 * Math.Log10(added);
totaldB.Text = final.ToString();
}
Run Code Online (Sandbox Code Playgroud)
}
公式基本上是 10log[10^(first value/10)+10^(second value/10)...+10^(nth value/10)]
我试图解析字符串的前三个字符.
public List<string> sortModes(List<string> allModesNonSorted)
{
foreach (string s in allModesNonSorted)
{
char firstNumber = s[0];
char secondNumber = s[1];
char thirdNumber = s[2];
char.IsDigit(firstNumber);
char.IsDigit(secondNumber);
char.IsDigit(thirdNumber);
combinedNumbers = Convert.ToInt16(firstNumber) + Convert.ToInt16(secondNumber) + Convert.ToInt16(thirdNumber);
}
return allModesNonSorted;
}
Run Code Online (Sandbox Code Playgroud)

它正确识别每个字符,但增加了额外的值53或55.下面我添加数字时,包括53和55.为什么这样做?
我有一个计算数字的公式,然后我需要把每一项的倍数,并将其存储到一个有序列表,多达数,因为它需要得到300我相信一个for循环是不是最好的这样做的方法,但这就是我得到的.
public List<double> axialLengthFt(double length)
{
fundamental = (1130 / 2) / length;
for (int i = 1; i < 15; i++)
{
double d = fundamental * i;
if (d <= 300)
modes.Add(d); //NullReferenceException here??
else
break;
}
return modes;
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我得到NullReferenceException,请帮忙!