2013-10-28 3 views
-3

этот код не работает, он сказал, что lessthaAverage (int) в calculateArray нельзя применить к(), я новичок, поэтому Я до сих пор не понимаю эту кодировку, вот вопрос: спросите, напишите объектно-ориентированную программу, которая произвольно генерирует массив из 1000 целых чисел от 1 до 1000. Рассчитайте количество чисел более 500 и найдите среднее число чисел , Подсчитайте число, которое меньше среднего и, наконец, отсортируйте числа в порядке убывания. Показать все ваши результаты. Пожалуйста, помогите мне, спасибо ...Напишите объектно-ориентированную программу, которая произвольно генерирует массив из 1000 целых чисел от 1 до 1000

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(); 

    } 
} 
+1

Можете ли вы опубликовать точное сообщение об ошибке? – nhgrif

+2

Какая у вас ошибка? –

+0

Не связанный с вашим вопросом, но вы не должны создавать экземпляр нового объекта «Случайный» при каждом вызове 'genArr()'. Сделайте 'ran' static и создайте экземпляр его один раз, например, в главном или статичном уровне уровня объявления класса. – pjs

ответ

0

Ваш метод lessthanAverage ожидает параметр int. Вы должны сохранить результат вызова среднего метода в переменной int и передать его вызову lessthanAverage.

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

Ваш метод lessthaAverage() ожидает в среднем будет принят в качестве параметра, но вы не пропуская его в том, когда вы это называете.

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() 
Смежные вопросы