簡體   English   中英

數組元素與平均值不同,小於數字

[英]Elements of array differ from average and less than number

我有小問題,也許任何人都可以幫助我。 我有一個隨機元素數組,然后計算平均值並掃描用戶的數字。 我正在尋找數組元素數量與平均值相比小於從用戶掃描的數量。

public static double average(int[][] array){
    double average = 0;
    int sum = 0;
    for(int i = 0; i < array.length; i++){
        for(int j = 0; j < array.length; j++){
          sum += array[i][j];
        }
    }
    average = (double) sum/array.length;
    return average;
}

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

    int[][] array = new int[4][4];
    for(int i = 0; i < array.length; i++){
        for(int j = 0; j < array.length; j++){
            array[i][j] = rnd.nextInt(10);
        }
    }

    int a = scan.nextInt();
    average(array);
    int elements = 0;
    for(int i = 0; i < array.length; i++){
    for(int j = 0; j < array.length; j++){
        if(array[i][j]) {
          // ?? need help here
        }
    }
}

這里:

average(array);

你正在調用你的平均方法...但你沒有使用它的結果!

double averageForArray = average(array);

允許您稍后與該值進行比較 ,例如:

int deltaGivenByUser = scan.nextInt();

for(int i = 0; i < array.length; i++){
  for(int j = 0; j < array.length; j++){
    if(Math.abs(array[i][j] - average) >= deltaGivenByUser) {
      ...

筆記:

  • 以上是“偽代碼”級別; 我沒有通過編譯器運行它; 所以要小心微妙的錯誤/錯別字。 我的代碼旨在讓您了解如何做事; 它不適用於“復制/粘貼/解決”。
  • 請查看您的命名 像“a”這樣的變量名稱沒有說什么 我的名字deltaGivenByUser可能並不完美,但至少它提供了一些想法是什么變量將用於。
  • 然后仔細看看如何使用掃描儀; 例如,通過使用hasNextInt()方法。 現在,當用戶提供的不是數字時,您的代碼將失敗
  • 另外還有一些東西:你有一個很好的計算平均值的方法; 您還可以創建另一個接收用戶提供的值的方法; 在主方法之外進行處理

這是有風險的:

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

您正在為兩個循環使用外部數組的大小。 最好使用子數組的實際大小:

 for(int i = 0; i < array.length; i++) {
      int[] subArray = array[i];
      for(int j = 0; j < subArray.length; j++){
      sum += subArray[j];
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM