我遇到了一個問題,我應該創建一個方法來回傳二維陣列中平均數最高的行
我在此處附加的方法僅獲取每行的平均值。我相信我需要跟蹤平均值最高的行,但我只是不知道如何有任何建議?
int[][] array = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
public static double getRowAverage(int grid[][]) {
int i, j;
double sum = 0, average = 0;
for (i = 0; i < grid.length; i ) {
for (j = 0; j < grid[i].length; j ) {
sum = sum grid[i][j];
}
average=sum/grid[i].length;
System.out.println("Average of row " (i 1) " = " average);
sum=0;
double a = i 1;
}
return average;
}
uj5u.com熱心網友回復:
您可以比較并檢查行平均值是否高于當前最高值
double rowAverage = sum / grid[i].length;
average = rowAverage > average ? rowAverage : average;
甚至更好,使用Math.max
average = Math.max(average, sum / grid[i].length);
uj5u.com熱心網友回復:
關于您問題中的代碼的一些說明。
- 以及
sum,您還需要average為每個新行歸零。 - 無需在回圈之外宣告回圈
i變數j。 - Java 有“短路”陳述句,例如
=. - 我了解此行的目的:
double a = i 1;
是存盤grid包含最高平均值的行的索引(在 中)。該變數應該是int(而不是double),因為行索引只能是int. 該變數也應該在外for回圈之外宣告,因為只有在處理完所有行之后才能知道它的最終值grid。在下面的代碼中,我重命名a為maxRow.
- 您需要另一個變數來存盤最大值。
請注意,我假設所有整數grid都是正數 - 根據您問題中的示例。
public class Averages {
public static void main(String[] args) {
int[][] grid = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
double maxAvg = 0.0;
int maxRow = -1;
for (int i = 0; i < grid.length; i ) {
double sum = 0, average = 0;
for (int j = 0; j < grid[i].length; j ) {
sum = grid[i][j];
}
average = sum / grid[i].length;
if (average > maxAvg) {
maxAvg = average;
maxRow = i;
}
System.out.println("Average of row " (i 1) " = " average);
}
System.out.println("Row with highest average: " (maxRow 1));
}
}
當我運行上面的代碼時,我得到以下輸出:
Average of row 1 = 2.0
Average of row 2 = 5.0
Average of row 3 = 8.0
Row with highest average: 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/521688.html
下一篇:將資料從一個表拆分到另一個表
