【发布时间】:2021-01-21 13:21:54
【问题描述】:
我一直在用 C# 编写一个关于 VS 的软件。这是我其他人制作的旧程序,但我认为我的问题出在我的代码中。在这个软件中,有两个Form,第一个获取一些数据,第二个进行操作并提供我使用的数据的报告。
double sum = 0;
for (int k = 0; k <= length - 1; )
{
sum += Convert.ToDouble(pisteA[k]);
k += 1;
}
double average = sum / 3;
我有一个包含第二种形式的文本和空值的数组。我只想对这个数组进行平均,所以使用 for 循环,我做了我必须做的事情。但是,当我启动我的软件时,它不会通过行代码并停在这一行。
sum += Convert.ToDouble(pisteA[k]);
当我使用断点查看发生了什么时,代码会经过这一行,然后转到我的其他表单执行:
formImpression.Show();
为了测试一些东西,我在 sum 行之后和之前添加了一个 MessageBox.Show,似乎软执行了问题行上方的代码,但不是在这之后的代码。
我真的不知道发生了什么。
编辑:为了对我使用的代码有更多的理解,我把它留在这里。
String[] varGen = { formulaire.Form1.varG.piste1, formulaire.Form1.varG.piste2, formulaire.Form1.varG.piste3, formulaire.Form1.varG.piste4, formulaire.Form1.varG.modulesPiste1, formulaire.Form1.varG.modulesPiste2, formulaire.Form1.varG.modulesPiste3, formulaire.Form1.varG.modulesPiste4 };
TextBox[] pisteA = { mesure1, mesure2, mesure3, mesure4, mesure5, mesure6, moyenne1 };
TextBox[] pisteB = { mesure7, mesure8, mesure9, mesure10, mesure11, mesure12, moyenne2 };
TextBox[] pisteC = { mesure13, mesure14, mesure15, mesure16, mesure17, mesure18, moyenne3 };
TextBox[] pisteD = { mesure19, mesure20, mesure21, mesure22, mesure23, mesure24, moyenne4 };
double moyenne = 0;
int indexMesures = 0;
bool presencepn = false;
for (int n = 0; n < dataGridView1.Rows.Count; n++)
{
if (formulaire.Form1.varG.pn == dataGridView1.Rows[n].Cells[0].Value.ToString() & formulaire.Form1.varG.pn != null)
{
presencepn = true;
//Initialisation
object module_A1 = dataGridView1.Rows[n].Cells[1].Value;
object module_A2 = dataGridView1.Rows[n + 1].Cells[1].Value;
object module_A3 = dataGridView1.Rows[n + 2].Cells[1].Value;
object module_D1 = dataGridView1.Rows[n].Cells[2].Value;
object module_D2 = dataGridView1.Rows[n + 1].Cells[2].Value;
object module_D3 = dataGridView1.Rows[n + 2].Cells[2].Value;
int moduleA1 = int.Parse(module_A1.ToString())-1;
int moduleA2 = int.Parse(module_A2.ToString())-1;
int moduleA3 = int.Parse(module_A3.ToString())-1;
int moduleD1 = int.Parse(module_D1.ToString())-1;
int moduleD2 = int.Parse(module_D2.ToString())-1;
int moduleD3 = int.Parse(module_D3.ToString())-1;
//Remplissage tableau sans exclusion
// Piste [1,2,3,4]
for (int j = 0; j < formulaire.Form1.varG.nbPistes; j++)
{
// Initialisation de la moyenne
moyenne = 0;
// Valeur pour la piste J
for (int i = 0; i < Convert.ToInt32(varGen[j + 4]); i++)
{
// Calcul de la moyenne
moyenne = moyenne + mesures[indexMesures];
// Choix de la piste
if (varGen[j] == "A")
{
pisteA[i].Text = Math.Round(mesures[indexMesures], 3).ToString(); // Remplissage des mesures
}
else if (varGen[j] == "B")
{
pisteB[i].Text = Math.Round(mesures[indexMesures], 3).ToString(); // Remplissage des mesures
pisteB[6].Text = Math.Round((moyenne / Convert.ToDouble(varGen[j + 4])), 3).ToString(); // Remplissage de la case moyenne
}
else if (varGen[j] == "C")
{
pisteC[i].Text = Math.Round(mesures[indexMesures], 3).ToString(); // Remplissage des mesures
pisteC[6].Text = Math.Round((moyenne / Convert.ToDouble(varGen[j + 4])), 3).ToString(); // Remplissage de la case moyenne
}
else if (varGen[j] == "D")
{
pisteD[i].Text = Math.Round(mesures[indexMesures], 3).ToString(); // Remplissage des mesures
pisteD[6].Text = Math.Round(moyenne / Convert.ToDouble(varGen[j + 4]), 3).ToString(); // Remplissage de la case moyenne
}
// Incrémentation de l'index des mesures
indexMesures += 1;
}
}
int length = pisteA.Length - 1;
//Suppression des modules exclus
for (int k = 0; k <= length; k++)
{
if (k == (moduleA1) | k == (moduleA2) | k == (moduleA3))
{
pisteA[k].Text = null;
}
}
for (int k = 0; k <= length; k++)
{
if (k == (moduleD1) | k == (moduleD2) | k == (moduleD3))
{
pisteD[k].Text = null;
}
}
double sum = 0;
for (int k = 0; k <= length - 1; )
{
sum += Convert.ToDouble(pisteA[k]);
k += 1;
}
double moyA = sum / 3;
pisteA[6].Text = Math.Round(moyA).ToString();
}
【问题讨论】:
-
尝试检查 Windows 偶数日志。
-
它说我的代码没有任何问题。
-
也许它抛出了一个异常。是否有 try/catch 块?
-
不在这部分代码中。你想让我发布我所有的代码吗?也许它会帮助你了解发生了什么。