编写一个面向对象的程序,随机生成一个介于1到1000之间的1000个整数的数组

时间:2013-10-28 02:33:26

标签: java arrays oop

此代码不起作用, 它说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();

    }
}

3 个答案:

答案 0 :(得分:0)

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

   int avg = show.average();
   int d=show.lessthanAverage(avg);

答案 1 :(得分:0)

您的lessthaAverage()方法希望将平均值作为参数传入,但是在调用它时不会传入它。

答案 2 :(得分:0)

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

public int lessthanAverage(int aver)

主要aver未被传递:

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

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

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

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

public int lessthanAverage()