我试图创建一个java方法,该方法将查看2d数组,并查看多次输入多少次数,然后输出计数。
所以给定这个数组
1 2 3 3
5 6 7 8
8 45 9 45
10 17 18 13
该方法将返回3
的计数。
到目前为止,这就是我所拥有的
int dupe=0;
int chk1=0, chk2=0;
for (int row =0; row < dataTable.length; row ++)
{//for 1
for ( int col = 0; col < dataTable[row].length; col++)
{//for 2
if (dataTable[row][col] == dataTable [chk1][chk2])
{//if
dupe++;
}//end if
chk1++;
chk2++;
}//end for 2
}//end for 1
dupe=dupe-1;
return dupe;
然而它不会运行,除非我在第二个4中声明chk1和chk2,每次运行检查时重新声明它们。
答案 0 :(得分:3)
如何实施:
答案 1 :(得分:1)
策略:迭代整个数组,并将每个元素与所有其他元素进行比较。将结果收集到变量中。既然我认为这是作业,我不能给你代码,但策略应该足以让你开始。
答案 2 :(得分:0)
你可以通过查看每一行来循环遍历数组......
for(int i = 0; i < rows; i++) {
for(int j = 0; j < columns; j++) {
// check
}
}
然后通过将数字与所有其他数字进行比较来检查数字是否已被重复,您可以将其存储在其他地方。
答案 3 :(得分:0)
两种解释:
/**
* The number of entries that are double of others.
* When 4 threes occure, 3 threes are counted.
*/
public static int moreThanOnce(int[][] matrix) {
Set<Integer> uniqueNumbers = new HashSet<Integer>();
int n = 0;
for (int row = 0; row < matrix.length; ++i) {
n += matrix[i].length;
Collections.addAll(uniqueNumbers, matrix[i]);
}
return n - uniqueNumbers.size();
}
/**
* The number of different numbers appearing more than once.
* When four appears 3 times and eight 4 times, then the result is 2.
*/
public static int moreThanOnce2(int[][] matrix) {
Set<Integer> usedNumbers = new HashSet<Integer>();
Set<Integer> doubleNumbers = new HashSet<Integer>();
for (int[] row : matrix) {
for (int x : row) {
if (!usedNumbers.add(x)) { // Not added, already used
doubleNumbers.add(x);
}
}
}
return doubleNumbers.size();
}