在下面的代码中,我浏览一个表并计算包含“ble”,“cle”,“tion”的行;我的计数器在x = 1时打印预期值,但在x = 2和3时,计数器的值是错误的。
我正在使用JTable,并试图将x的每个值都指向包含上述字符串的行数。
预期值:
x = 1:counter1 = 5 counter2 = 5 counter3 = 6
x = 2:counter1 = 10 counter2 = 10 counter3 = 6
x = 3:counter1 = 20 counter2 = 17 counter3 = 6
int counter1 = 0;
int counter2 = 0;
int counter3 = 0;
for (int x = 1; x < 4; x++)
{
myTable.goToValue(x);
for (int i = 0; i < myTable.getRowCount(); i++)
{
if (myTable.getIcon(i, 0).matches("blue.gif"))
{
if (myTable.getRowValue(i, 1).contains("ble."))
{
counter1++;
}
if (myTable.getRowValue(i, 1).contains("cle."))
{
counter2++;
}
if (myTable.getRowValue(i, 1).contains("tion."))
{
counter3++;
}
}
}
System.out.println(counter1);
System.out.println(counter2);
System.out.println(counter3);
}
答案 0 :(得分:1)
在for循环中移动计数器变量的初始化。
每次循环都需要将值重置为零。计数器只是保持计数,因为你只在进程开始时将它们设置为零,而不是在x = 2和x = 3之前。
改变这个:
int counter1 = 0;
int counter2 = 0;
int counter3 = 0;
for (int x = 1; x < 4; x++) {
myTable.goToValue(x);
对此:
for (int x = 1; x < 4; x++) {
int counter1 = 0;
int counter2 = 0;
int counter3 = 0;
myTable.goToValue(x);
答案 1 :(得分:0)
尝试在第一个counter1
循环之外初始化counter2
,counter3
和for
。
答案 2 :(得分:0)
我不太明白你在这里要做什么,但是如果你在计算行数,不应该放
int counter1 = 0;
int counter2 = 0;
int counter3 = 0;
在for循环之外?