我已经创建了一个wpf程序,并使用for循环来获取项目的名称,qty和prc的值,并将它们转换为字符串,以便在我在应用程序中加载的电子表格中显示它们。
到目前为止,我的工作代码是:
worksheet1.Range["C14:D14:E14"].Value = got_item;
worksheet1.Cells["A14"].Value = qty.Value.ToString();
worksheet1.Cells["G14"].Value = prc.Value.ToString();
v1 = got_value;
i1q = Int32.Parse(qty.Value.ToString());
i1p = prc.Value;
但是,我将不得不再重复12次,直到:
worksheet1.Range["C26:D26:E26"].Value = got_item;
worksheet1.Cells["A26"].Value = qty.Value.ToString();
worksheet1.Cells["G26"].Value = prc.Value.ToString();
v13 = got_value;
i13q = Int32.Parse(qty.Value.ToString());
i13p = prc.Value;
它运行良好,但看起来不太吸引人,所以我尝试为它创建一个for循环,但我对for循环几乎没有经验。
我尽我所能,到目前为止,这是我的进步:
for(x=0;x<13;x++)
{
y += x + 13;
worksheet1.Range["C"+y+":D"+y+":E"+y].Value = "";
worksheet1.Cells["A"+y].Value = qty.Value.ToString();
worksheet1.Cells["G"+y].Value = prc.Value.ToString();
v + x = got_value;
i + x + q = Int32.Parse(qty.Value.ToString());
i + x + p = prc.Value;
}
我在连接x和y的for循环值时遇到麻烦:
更新:感谢Jcl,这是我的最终结果:
for (x = 0; x < 13; x++)
{
y = x + 14;
y.ToString();
b[x] = worksheet1.Range["C" + y + ":D" + y + ":E" + y].Value.ToString();
if (b[x] == "")
{
worksheet1.Range["C" + y + ":D" + y + ":E" + y].Value = got_item;
worksheet1.Cells["A" + y].Value = qty.Value.ToString();
worksheet1.Cells["G" + y].Value = prc.Value.ToString();
v[x] = got_value;
iq[x] = Int32.Parse(qty.Value.ToString());
ip[x] = prc.Value;
}
}
虽然这不起作用,因为if语句在没有else if的情况下循环,一个简单的解决方案就是创建一个单独的if语句并循环else if if 12次。
如果可以应用,我会尝试研究案例,但是,再次感谢Jcl。刚刚敲掉多行代码并同时学习循环。
答案 0 :(得分:3)
问题的第一部分是:
y += x + 13;
您正在将y
的值增加x+13
。
因此,在第一次迭代中,y
为0
,x
为0
,您获得y=13
。
但在第二次迭代中,y
为13
,x
为1
。因此,您y
之后递增 1+13
,最终得到y=27
。
在第三次迭代中,y
为27
而x
为2
,因此您递增27+(13+2)
,因此y=42
。
(等)
如果在第一次迭代中,y
必须为13
,则在第二次迭代中,必须为14
等,那么您需要将其设置为:
y = x + 13;
没有+=
问题的第二部分是你不能只是将表达式的结果评估为变量的名称(可以通过反射来完成,但让我们忘掉它)。
因此,不是让变量v1
,v2
,v3
等,以及i1q
,i2q
等,而是有意义的是某种数组或列表。
所以,无论你在哪里定义这些变量,都应该有类似的东西(我无法弄清楚类型,因为你给出的名称不是很具描述性,所以我认为它们是整数,将类型改为合适的) :
int[] v = new int[14];
int[] iq = new int[14];
int[] ip = new int[14];
所以当在循环中访问这些变量时:
v[x] = got_value;
iq[x] = Int32.Parse(qty.Value.ToString());
ip[x] = prc.Value;
请注意,c#中的数组基于索引0,但这是正确的,因为您的for
循环(如当前所述)从0迭代到12(而不是从1到13)。