2015-10-05 62 views
-1

我在解決任務的最後部分時遇到了問題。我得到的最小數量的陣中,但是當我移動到另一個方法我得到這個在我的打印:如何將多維數組移動到另一個方法中?

[[[email protected] 

如果我寫這在我的main(String[] args) {我得到0,這是正確的。

public class Task05 { 

    public static void main(String[] args) { 
     double[][] numbers = getArray(); 

     System.out.println("Smallest number in array is " + numbers); 

    } 

    public static double[][] getArray() { 

     double[][] numbers = new double[25][25]; 
     double smallest = Integer.MAX_VALUE; 

     for (int row = 0; row < numbers.length; row++) { 
      for (int column = 0; column < numbers[row].length; column++) { 

       if (smallest > numbers[row][column]) { 
        smallest = numbers[row][column]; 



       } 

      } 
     } 
     return numbers; 
    } 
} 
+1

,我不明白你的問題。 「用不同的方法進行」是什麼意思?你到目前爲止嘗試過什麼?你也沒有用數值填充你的數組。在你的'System.out.println'中,你應該使用'smallest'而不是'numbers [row] [column]'。 – Wavemaster

+0

編輯了這個問題,希望現在更清楚 –

+0

@KristofferNærland'getArray()'返回一個*數組*(!),然後打印出來。您如何期望打印單個號碼? – Biffen

回答

1

您需要將陣列傳遞給方法。現在,你在你的getArray()方法中創建一個新的數組,它沒有任何內容!

你必須明白的是,即使你的方法是Static,你的數組並不是!這意味着你需要將你的數組作爲參數傳遞給你的方法。

此外,您得到該輸出的原因是您將數組傳遞給您的打印語句,而不是調用getArray()方法(它也會返回此處的地址)。

在你的getArray()方法中,你實際上並不需要或者真的想創建第二個數組。這樣想一想;如果你的數組是100萬個元素呢?你是否真的想要分配另外的1,000,000個元素來尋找最小的元素?沒有!這對系統資源非常重要。我們將遍歷我們已經創建的數組!

基於上面介紹的問題,您需要返回找到的最小數字,而不是數組的地址!這意味着你需要你的返回類型更改爲doublereturn smallest

public class Task05 { 

     public static void main(String[] args) { 
      double[][] numbers = getArray(); 

      System.out.println("Smallest number in array is " + getArray(numbers)); 

     } 

     // Changed return type to double, instead of double[][] 
     public static double getArray(double [][] numbers) { 
      double smallest = Integer.MAX_VALUE; 

      for (int row = 0; row < numbers.length; row++) { 
       for (int column = 0; column < numbers[row].length; column++) { 

        if (smallest > numbers[row][column]) { 
         smallest = numbers[row][column]; 
        } 

       } 
      } 
      // Return the smallest number that you found 
      return smallest; 
     } 
    } 
0
public class JavaApplication8 { 

    public static void main(String[] args) { 
     // create and initialize array 
     int[][] x = {{1, 2, 0}, {4, 5, 6}}; 
     // call smallest method and print the value returned 
     System.out.println("smallest is " + smallest(x)); 
    } 

    // smallest method 
    // to find small element in array 

    public static int smallest(int[][] x) { 
     // suppose the first element is the small one 
     int smallest = x[0][0]; 

     // iterate throgh array 
     for (int i = 0; i < x.length; i++) { 

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

       // compare current element with smallest element 
       // if current element is the small one then save it in smallest variable 
       if (x[i][j] < smallest) { 
        smallest = x[i][j]; 
       } 
      } 
     } 
     // return smallest 
     return smallest; 
    } 
} 
+1

如果你解釋爲什麼他的代碼不起作用以及爲什麼你的方法更好,而不是僅僅給出代碼,那麼對OP可能是有益的。 :) –

+2

請添加一個解釋給你的答案,張貼未註釋的代碼可能沒有多大幫助。 OP肯定有興趣找出他做錯了什麼。 –

+0

好的。感謝您的關注 –

相關問題