无法将数组传递给第二种方法

时间:2018-11-11 00:22:54

标签: java arrays

我在完成家庭作业时遇到困难,而且我不太擅长正确编写代码,我可以理解它的工作原理,但是自己创建它很麻烦。我应该编写一个应用程序,该应用程序创建一个由1到100的10个随机数组成的数组,然后将它们打印出来。第二种方法而不是计算平均值,第三种方法显示低于该平均值的所有数字。我已经完成了前两部分,但是它只显示10个随机整数,不计算平均值,我的代码是这样;

import java.util.Random;

public class ArrayTest{

public static void main(String[] args){

    Random random= new Random();
    int numbers[]= new int[10];
    for (int i = 0; i < 10; i++)
    {
    int number= random.nextInt(100);
    System.out.println(number);
    numbers[i]=number;
    }
}

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

我要去哪里错了,要温柔。

2 个答案:

答案 0 :(得分:0)

第一个问题是您永远不会调用average()方法:

Random random= new Random();
int numbers[]= new int[10];
for (int i = 0; i < 10; i++)
{
   int number= random.nextInt(100);
   System.out.println(number);
   numbers[i]=number;
}
System.out.println(average(numbers));

对于第三种方法,您将需要遍历numbers数组并显示小于平均值的数字。像这样:

public static void lowerNums(int average, int[] arr) {
    //For each int in the array
    for(int num : arr) {
       //If the int is less than the average, print it out
       if(num < average) {
          System.out.println(num);
       }
    }
}

或使用流:

Arrays.stream(arr).filter(e -> e > average).forEach(System.out::println);

答案 1 :(得分:-1)

以下是在方法中使数组成为参数的方法:

public static void doStuff(int[] numbers){
        //super awesome code
    }

如果在另一个方法中有一个数组(称为数字),则可以通过键入doStuff(digits)将其直接传递给doStuff()。就这么简单。

现在,提出您的问题。在您的第三个方法中,我认为您应该添加两个参数:数组和较早获得的平均值。另外,很难说出有多少个数小于平均值,我建议您使用arraylist而不是array。您可以稍后转换为数组。看这个:

public static int[] getSmallValues(int average, int[] numbers){
    Arraylist<Integer> smallNumbers = new Arraylist<>();

    for(int i: numbers){
        if(i < average){
            smallNumbers.add(i);
        }
    }

    return ((int[]) smallNumbers.toArray());
}

我希望这会有所帮助。.编码愉快!