2015-07-01 80 views
0

創建2-d陣列寫成M:你如何找到了最大行中的二維數組

  1. 要求用戶輸入的行和列的尺寸從鍵盤(使用掃描儀)。 N是9,如果用戶輸入列大小大於N + 4,則請求用戶重新輸入列大小
  2. 使用隨機對象將所有數組元素填充爲(3.0,13.0)範圍內的雙數
  3. 傳遞上述陣列m和調用以下兩種方法

    • findMaxRow(double[][]array),找到並打印列的最大和的2D陣列
    • returnAvg(m)中,打印出陣列的平均m

評論:

所以,我做了代碼,找到最大科爾姆但我無法弄清楚如何找到最大行。我需要能夠找到最大行,但我想清楚如何,因爲我的代碼找到cllm而不是最大行。

這裏是我的代碼:import java.util.Scanner;

public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 
    Random rand = new Random(); 

    System.out.print("Number of Rows? "); 
    int rows = input.nextInt(); 
    System.out.print("Number of Columns? "); 
    int columns = input.nextInt(); 
    while (columns > 7) { // check for column > n+5 where n = 2 in my case 
     System.out.print("The column amount is too high. Try another number: "); 
     columns = input.nextInt(); 
    } 

    double[][] m = new double[rows][columns]; 

    for (int i = 0; i < rows; i++) { 
     for (int j = 0; j < columns; j++) { 
      m[i][j] = rand.nextDouble()*7+4; 
     } 
    } 
    findMaxCol(m); 
    System.out.println("The average value of this array is "+returnAvg(m)); 
} 
public static void findMaxCol(double[][] a) { 
    double[] maxCol = new double[a[0].length]; 
    double max = 0; 
    int maxColNum=0; 
    for (int i = 0; i < a[0].length; i++) { // Sum of Columns 
     for (int j = 0; j < a.length; j++) { 
      maxCol[i]+=a[j][i]; 
     } 
    } 
    //System.out.println(Arrays.toString(maxCol)); 
    for (int i = 0; i < maxCol.length; i++) { 
     if (max < maxCol[i]) { 
      max = maxCol[i]; 
      maxColNum = i; // column number will associate with its array column starting with 0 
     } 
    } 
    System.out.println("The highest column sum is Column #"+maxColNum+" with a sum of "+max); 
} 
public static double returnAvg(double[][] a) { 
    double sum = 0; // initialization 
    for (int i = 0; i < a.length; i++) { 
     for (int j = 0; j < a[i].length; j++) { 
      sum+=a[i][j]; 
     } 
    } 
    // System.out.println(sum); Test line 
    return (sum/(a.length*a[0].length)); // avg 
} 

}

+0

列和行是我們用來模擬數據的好抽象;他們本身並不是2D陣列的固有方面。你能否澄清你到底在問什麼,並將你的代碼示例壓縮到[MCVE](http://stackoverflow.com/help/mcve)? –

+0

我的代碼只找到我希望它找到行的最大列。我將如何能夠做到這一點。我是一個java新手,可以使用幫助。 –

+0

你沒有采取我剛纔所說的任何內容。 –

回答

0

不知道我理解你想要的結果,但是這應該給你以最大的總和行,還有什麼金額爲。請注意,這不會考慮多個等於總和的行。它會以最大的總和報告數組中的第一行。

public static void findMaxRow(double[][] a){ 

    double maxSum = 0; 
    int maxRow = 0; 

    for (int row = 0; row < a.length; row++){ 

     double rowSum = 0; 

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

     if (rowSum > maxSum){ 
      maxSum = rowSum; 
      maxRow = row; 
     } 
    } 

    // maxSum should be the greatest sum of any row 
    // maxRow is the row that contained the greatest sum 
} 
+0

如果數組有全部負數,該怎麼辦? rowSum的值永遠不會大於0,所以答案將始終保持爲0.我卡在那裏。你能想出任何辦法嗎? –

相關問題