Java 如何比较表格?

Java 如何比较表格?,java,arrays,Java,Arrays,在下面的代码中,我计算字符串的数量,然后尝试检查该数量是否与值匹配 代码是正确的,但我不知道如何将矩阵与计数值进行比较: 例如:计数器1给出: 10 150 10 0 200 我需要检查是否匹配值 int[][] values = { { 10, 150, 10, 0, 10, 200 }, { 20, 5, 18, 60, 14, 0 }, { 16, 5, 18, 20, 25, 30 } }; for (int i = 1; i < 4;i++) {

在下面的代码中,我计算字符串的数量,然后尝试检查该数量是否与值匹配 代码是正确的,但我不知道如何将矩阵与计数值进行比较:

例如:计数器1给出:

10
150
10
0
200
我需要检查是否匹配值

int[][] values = { { 10, 150, 10, 0, 10, 200 }, { 20, 5, 18, 60, 14, 0 }, { 16, 5, 18, 20, 25, 30 } };

for (int i = 1; i < 4;i++)
    {    
      //do action here
      int counter1 = 0;
      int counter2 = 0;
      int counter3=0;
      int counter4=0;
      int counter5=0;
      int counter6=0;   

      for (int j = 0; j < myTableNbRows; i++)
      {
        if (myTable.getValue(j, 0).matches("hello"))
        {
          if (myTable.getValue(j, 1).contains("tions."))
          {
            counter1++;
          }
        if (myTable.getValue(j, 1).contains("ons."))
          {
            counter2++;
          }
     if (myTable.getValue(j, 1).contains("an."))
          {
            counter3++;
          }
      if (myTable.getValue(j, 1).contains("auns."))
          {
            counter4++;
          }
    if (myTable.getValue(j, 1).contains("896."))
          {
            counter5++;
          }
     if (myTable.getValue(j, 1).contains("1222."))
          {
            counter6++;
          }

        }
      }
//here I nedd to compare values with counter 
 assertEquals(values,counter1);
 assertEquals(values,counter2);
int[][]值={{10,150,10,0,10,200},{20,5,18,60,14,0},{16,5,18,20,25,30};
对于(int i=1;i<4;i++)
{    
//在这里行动
int计数器1=0;
int计数器2=0;
int计数器3=0;
int计数器4=0;
int计数器5=0;
int计数器6=0;
对于(int j=0;j

也许你应该看看

Character.toString()
方法。

两个选项。。。 将计数器存储在数组中,并在循环中调用断言

for (int t = 0; t<counters.length; t++) {
   assertEquals(values[i][t], counters[t]);
}

对于(int t=0;t我不确定
值实际代表的是什么,但假设它应该是一组需要匹配的已定义计数(即,您有
(counter1==10和counter2==150…)或(counter1==20和counter2==5…
),然后尝试以下操作:

boolean matchFound = false;
for( int[] valuesRow : values ) {
   matchFound = valuesRow[0] == counter1 && valuesRow[1] == counter2 ...;
   if( matchFound) {
     break;
   }
} 
请注意,通常情况下,您应该创建一个
计数器
数组:
int[]counter=new int[6];
并递增数组内容。然后您可以循环处理如上所示的值行,但比较另一行中的元素:

boolean matchFound = false;
for( int[] valuesRow : values ) {
   boolean rowMatches = true; //assume a match
   for( int i = 0; i < counters.length; i++ ) {
     if( valuesRow[i] != counters[i] ) {
       rowMatches = false;
       break; //break the inner loop
     }
   }
   if( rowMatches ) {
     matchFound = true;
     break; //the outer loop
   }
} 
编辑2:
如果要在外循环后进行断言,需要将计数器设置为二维数组:
int[][]counter=new int[4][6];
并按如下方式递增:
counter[i-1][j]+;
(注意上面描述的
i-1
)。然后循环使用
计数器
并进行比较。

您能举一个例子说明“将值与计数器进行比较”的含义吗?例如,我假设计数器1的值是否在数组“值”中的某个位置!?我需要使用assertEquals来验证value==counter提示:修复缩进以使代码结构更易于阅读。当前assertEquals位于何处。只需将计数器放入一个数组中,以便可以在其上循环。如下所示?int[]counter={0,0,0,0,0,0};for(int t=0;tsee java.util.Arrays#deepEquals()和#equals()@乌斯塔曼:是的,但我更愿意在可能的情况下使用汉克雷斯特进行断言。因此,IsArrayContainingInOrder@lola-是的,您将增加数组中的计数器,而不是单个字段。但语法将是int[]counters=new int[6];数组将自动初始化为所有0。请解释这将有何帮助?
boolean matchFound = false;
for( int[] valuesRow : values ) {
   boolean rowMatches = true; //assume a match
   for( int i = 0; i < counters.length; i++ ) {
     if( valuesRow[i] != counters[i] ) {
       rowMatches = false;
       break; //break the inner loop
     }
   }
   if( rowMatches ) {
     matchFound = true;
     break; //the outer loop
   }
} 
assertEquals(values[i-1][0], counter1); //note that you loop i from 1 to 4 so you need to subtract 1 (array indices are 0 to 3)
assertEquals(values[i-1][1], counter2);
...