-3

这段代码不起作用,它说calculateArray中的lessthaAverage(int)不能应用于(),我是初学者所以我仍然不明白这个编码,这是问的问题,写一个面向对象的程序随机生成一个包含 1000 个介于 1 到 1000 之间的整数的数组。计算超过 500 的数字的出现次数并找到这些数字的平均值。计算小于平均值的数字,最后按降序对数字进行排序。显示所有输出。请帮帮我!!!,谢谢...

import java.util.*;
import java.io.*;
//import java.util.random;

public class CalculateArray
{
    //declare attributes
    private int arr[] = new int[1000];
    int i;


    //generates an array of 1000 integers between 1 to 1000
    public void genArr()
    {
        Random ran = new Random();  

        for(i = 0; i < arr.length; i++)
        {
            arr[i] = ran.nextInt(1000) + 1;

        }

    }

    //Calculate the occurences of number more than 500
    public int occNumb()
    {
       int count;
       for(i = 0; i < arr.length; i++) 
       {
           if(arr[i] > 500) 
           {
               count++;

           }
       }

       return count;
    }

    //find the average of the numbers
    public int average()
    {
        int sum, aver;

        for(i = 0; i < arr.length; i++)
        {
            sum += arr[i];

        }
        aver = sum/1000;

        return aver;
    }

    //Count the number which is less than the average
    public int lessthanAverage(int aver)
    {
        int cnt;
        cnt = 0;
        for(i = 0; i < arr.length; i++)
        {
            if(arr[i] < aver)
            {
                cnt++;
            }
        }

        return cnt;
    }

    //finally sort the numbers in descending order.
    public void sort(int[] num)
    {

        System.out.println("Numbers in Descending Order:" );


    for (int i=0; i <= num.length; i++)
        for (int x=1; x <= num.length; x++)
            if (num[x] > num[x+1])
            {
                int temp = num[x];
                num[x] = num[x+1];
                num[x+1] = temp;
            }
    }

    //Display all your output

    public void display()
    {
         int count, aver;
         System.out.println(arr[i] + " ");
         System.out.println("Found " + count + " values greater than 500");
         System.out.println("The average of the numbers is " + aver);
         System.out.println("Found " + count + " values that less than average number ");
    }    

    public static void main(String[] args)
    {
        CalculateArray show = new CalculateArray();

        show.genArr();
        int c= show.occNumb();
        show.average();
        int d=show.lessthanAverage();
        show.sort(arr);
        show.display();

    }
}
4

3 回答 3

0

您的方法 lessthanAverage 需要一个 int 参数。您应该将平均方法调用的结果存储到一个 int 变量中,并将其传递给 lessthanAverage 的调用。

   int avg = show.average();
   int d=show.lessthanAverage(avg);
于 2013-10-28T02:42:04.920 回答
0

您的lessthaAverage()方法期望将平均值作为参数传入,但您在调用它时并未将其传入。

于 2013-10-28T02:42:06.513 回答
0

似乎您的方法lessthanAverage需要 aint作为参数,但您没有将其传入main

public int lessthanAverage(int aver)

主要aver没有通过:

int d=show.lessthanAverage();  // where is aver?

但是,如果您想知道方法内部的平均值,可以在average内部调用方法lessthanAverage

if(arr[i] < this.average())

并且根本不传递任何参数:

public int lessthanAverage()
于 2013-10-28T02:42:50.427 回答