-2

假设给定一个名为 int 的变量nPositive和一个已创建并分配给a2d. 编写一些语句来计算整个二维数组中大于零的所有元素的数量,并将值赋给nPositive

代码:

for(int i=0; i<a2d.length; i++){
    int nPositive;
    for(int j=0; j<a2d[a2d.length-1].length; j++) {
        if(a2d[i][j] > 0) {
            nPositive = a2d[i][j];
        } 
    }
}

它有一个编译错误。为什么?

4

4 回答 4

0

iiner 循环不正确:

for(int j=0; j<a2d[i].length; j++){
于 2013-03-03T05:16:21.480 回答
0

我测试了一下,发现你的代码没有任何编译错误...

 for(int j=0; j<a2d[a2d.length-1].length; j++){//

设长度为 a2d[10][10]

关于声明a2d[a2d.length-1].length ,is equal a2d[10-1].length ,is equal a2d[9].length=>10

你的算法对我来说很好,我没有发现任何错误 这是我的测试代码

    public class A2dTest {

  public static void main(String[] arr) {
            int[][] a2d = new int[10][10];
            for (int i = 0; i < 10; i++) {
                for (int j = 0; j < 10; j++) {
                    a2d[i][j] = (int) (Math.random() * 100) + 1000000;// all positives
                }
            }
            for (int i = 0; i < a2d.length; i++) {
                int nPositive = 0;
                for (int j = 0; j < a2d[a2d.length - 1].length; j++) {
                    if (a2d[i][j] > 0) {
                        nPositive = a2d[i][j];
                         System.out.println("nPositive=" + nPositive);
                    }}
            }
        }
    }
于 2013-03-03T05:44:31.547 回答
0

你没有初始化nPositive

// make nPositive a global variable
int nPositive = 0;

for(int i=0; i<a2d.length; i++){
  for(int j=0; j<a2d[a2d.length-1].length; j++) {
    if(a2d[i][j] > 0) {
        nPositive += a2d[i][j]; // add the value into nPositive as you go through the array
        } 
    }
}
于 2013-03-03T05:16:56.403 回答
0

我相信这是关于 codeLab 的问题之一。您只需将 nPositive 正确初始化为 0 并为每个正整数递增它。这就是他们正在寻找的涉及输出的全部内容。所以你的代码需要是:

    nPositive = 0;
for (int i = 0; i < a2d.length; i++) 
{
    for (int j = 0; j < a2d[i].length; j++) 
    {
        if (a2d[i][j] > 0) 
        {
            nPositive++;
        }
    }
}
于 2016-11-19T05:15:15.240 回答