Java 如何比较表格?
在下面的代码中,我计算字符串的数量,然后尝试检查该数量是否与值匹配 代码是正确的,但我不知道如何将矩阵与计数值进行比较: 例如:计数器1给出: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++) {
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);
...