【发布时间】:2015-02-16 11:18:38
【问题描述】:
所以我得到了这个任务,我们必须检查创建一个数组并用0s 和1s 填充它。现在,程序的目的是找出数组中有多少个1s,所以输出应该是1s的个数。
因此,我创建了一个方法,在数组中搜索1s,但不知何故找不到它们。我已经通过 eclipse 进行了检查,并且输入数字被正确分配到数组中,但是不知何故,该方法无法找到可怕的 1s。
public static int finding1s (int array[][]){
for (int i = 0; i < array.length; i++){
for ( int j =0; j < array[i].length; j++){
if (array[i][j] != 0){
value++;
}
}
}
return value;
}
所以比如数组的二维输入是5和4,数组中赋给它们各自整数的数是
0100
1000
0010
1101
1111
该方法不会输出10,因为有10,而是输出20,因为那是5 x 4,0的总数和1s 在数组中。
【问题讨论】:
-
为什么不试试== 1,增加价值?
-
值在哪里初始化?
-
我已经在方法之外初始化了值。另外,如果我将条件更改为 == 1,我会得到 0 的输出,这也不正确,因为那里有 1。
-
您必须在每次调用该方法时将
value重置为0。否则,每次调用该方法时,您都会不断地添加到value。我建议你在方法中初始化value = 0,因为它在方法之外没有真正的“价值”。 -
当然@Fruloops。我的猜测是,将您的逻辑从
!= 0翻转到== 1也会将您的输出从最小值 (0) 更改为最大值 (20)。我认为这很奇怪,可能表明比较数据的代码或数据本身有问题。只是一个想法。