JTable线的计数器

时间:2011-08-10 14:45:26

标签: java

在下面的代码中,我浏览一个表并计算包含“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);
}

3 个答案:

答案 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循环之外初始化counter2counter3for

答案 2 :(得分:0)

我不太明白你在这里要做什么,但是如果你在计算行数,不应该放

 int counter1 = 0;
 int counter2 = 0;
 int counter3 = 0; 
在for循环之外