大家好,我是java的菜鸟,所以不确定它的查询,但这适用于C#所以? 使用这段代码获得相同结果时遇到一些麻烦:
for (int i = 0; i < 50; i++){
ar1 = array[i][0];
ar2 = array[i][1];
ar3 = array[i][2];
ar4 = array[i][3];
ar5 = array[i][4];
ar6 = array[i][5];
if (ar1 == rs1 || ar1 == rs2 || ar1 == rs3 || ar1 == rs4 || ar1 == rs5 || ar1 == rs6)
M++;
if (ar2 == rs1 || ar2 == rs2 || ar2 == rs3 || ar2 == rs4 || ar2 == rs5 || ar2 == rs6)
M++;
if (ar3 == rs1 || ar3 == rs2 || ar3 == rs3 || ar3 == rs4 || ar3 == rs5 || ar3 == rs6)
M++;
if (ar4 == rs1 || ar4 == rs2 || ar4 == rs3 || ar4 == rs4 || ar4 == rs5 || ar4 == rs6)
M++;
if (ar5 == rs1 || ar5 == rs2 || ar5 == rs3 || ar5 == rs4 || ar5 == rs5 || ar5 == rs6)
M++;
if (ar6 == rs1 || ar6 == rs2 || ar6 == rs3 || ar6 == rs4 || ar6 == rs5 || ar6 == rs6)
M++;
if (M == 3)
w3++;
if (M == 4)
w4++;
if (M == 5)
w5++;
if (M == 6)
w6++;
}
lbl3.setText(String.valueOf(w3));
lbl4.setText(String.valueOf(w4));
lbl5.setText(String.valueOf(w5));
lbl6.setText(String.valueOf(w6));
在for循环中:
将ar(N)设置为数组的一部分
检查rs(N)然后增加M,如果为真
检查M以查看其3,4,5,6是否会增加w(N)如果为真
向标签显示所有w(N)的总数 例如lbl3,10 lbl4,22 lbl5,12 lbl6,6
但我得到的只是一个标签,总共1或全部给1! 试过封闭在{}并使用(否则如果), 阵列已满,所以我很难过!!!
答案 0 :(得分:2)
除非对象是基本类型,否则请使用.equals而不是==
另外,假设您的类型是字符串,我将rs放入Set中,然后执行包含。
Set<String> ares = new HashSet<String>();
ares.add(r1);
...
ares.add(rN);
for (int i = 0; i < 50; i++) {
for (int j = 0; j <= 5; j++) {
if (ares.contains(array[i][j])
M++;
}
}
答案 1 :(得分:0)
您首先不需要分配这么多变量。如果您简化了一些事情,它可以使调试更容易
for (int i = 0; i < 50; i++){
for (int j = 0; j < 6; j++){
value = array[i][j];
if(value == rs1 through 6){//check to see if value equals all of the rs1, rs2, etc... variables
M++;
}
}
# assign W variables...
}
如果仍然没有得到预期的变量,可以在循环内部放置间歇性的print语句,以查看值是否在循环的不同迭代中。但是,我建议您使用设置断点的调试程序,以便在执行期间可以预期变量。希望这可以帮助。