2013-03-03 88 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++; 
     } 
    } 
}