2013-03-03 81 views
-2

假设您获得了一个名为nPositive的int变量和已创建并分配给a2d的2维整数数组。编写一些计算整个二维数组中大于零的所有元素的数量的语句,并将值分配给nPositiveJava中的2维阵列

代码:

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

什么是编译错误?正如其他人所说的,对你的问题更详细。 – 2013-03-03 05:14:11

+1

我想你的意思是你的内循环计数器的'a2d [i] .length'。此外,数组数组中元素的数量不是各个元素的值。 – 2013-03-03 05:15:12

+0

更多提示: ⇒您确定要使用: - ⇒您可能想使用除1​​之外的其他数字 – 2013-03-03 05:19:54

回答

0

的iiner周期是不正确的:

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

如果我这样做程序说:“你似乎有编译错误”:( – 2013-03-03 05:21:11

+5

什么样的无价值的编译器会给你一条包含“你似乎有编译错误”的信息?! – 2013-03-03 05:25:54

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 
     } 
    } 
} 
+0

原语不能为空。也不需要分配它。 – 2013-03-03 05:39:29

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); 
        }} 
      } 
     } 
    } 
0

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

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++; 
     } 
    } 
}