Java 数组的元素与平均值不同,且小于个数

Java 数组的元素与平均值不同,且小于个数,java,arrays,average,Java,Arrays,Average,我有个小问题,也许有人能帮我。我有一个随机元素数组,然后计算平均值并扫描用户的一个数字。 我发现数组中元素的数量与平均值的差异小于用户扫描的数量 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

我有个小问题,也许有人能帮我。我有一个随机元素数组,然后计算平均值并扫描用户的一个数字。 我发现数组中元素的数量与平均值的差异小于用户扫描的数量

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
        }
    }
}
public静态双平均(int[][]数组){
双平均=0;
整数和=0;
for(int i=0;i
此处:

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) {
      ...
int-deltaGivenByUser=scan.nextInt();
for(int i=0;i=deltaGivenByUser){
...
注:

  • 上面的代码是“伪代码”级别的;我没有通过编译器运行它;所以要小心细微的错误/打字错误。我的代码是为了让你知道如何操作;它不是为了“复制/粘贴/解决”
  • 请检查一下您的命名。像“A”这样的变量名不会说任何东西。我的名字deltaGivenByUser可能并不完美,但至少它给出了该变量的一些用途
  • 然后仔细看看如何使用扫描器;例如,通过使用该方法。现在,当用户提供的内容不是数字时,您的代码将失败
  • 还有一些不同的东西:您有一个很好的方法来计算平均值;您还可以创建另一个方法来接收用户提供的值;在主方法之外进行处理
    • 这是有风险的:

      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
      两个循环都使用外部数组的大小。最好使用子数组的实际大小:

       for(int i = 0; i < array.length; i++) {
            int[] subArray = array[i];
            for(int j = 0; j < subArray.length; j++){
            sum += subArray[j];
       }
      
      for(int i=0;i
      您在“??”面临的问题是什么。