user1368970
user1368970

Reputation: 555

method in class cannot be applied to given types

I'm creating a program that generates 100 random integers between 0 and 9 and displays the count for each number. I'm using an array of ten integers, counts, to store the number of 0s, 1s, ..., 9s.)

When I compile the program I get the error:

RandomNumbers.java:9: error: method generateNumbers in class RandomNumbers cannot be applied to given types;
generateNumbers();

required: int[]

found:generateNumbers();

reason: actual and formal argument lists differ in length

I get this error for the lines of code that I call the methods generateNumbers() and displayCounts() in the main method.

    public class RandomNumbers {

       public static void main(String[] args) {

            //declares array for random numbers
        int[] numbers = new int [99];

        //calls the generateNumbers method
        generateNumbers();

        //calls the displayCounts method        
        displayCounts();
    }

    //***************************************************************** 

    private static int generateNumbers(int[] numbers){

        for(int i = 0; i < 100; i++){
            int randomNumber;
            randomNumber = (int)(Math.random() *10);
            numbers[i] = randomNumber;
        return randomNumber;
        }

    }

    //***************************************************************** 

    private static void displayCounts(int[] numbers){
        int[] frequency = new int[10];

        for(int i = 0, size = numbers.length; i < size; i++ ){
            System.out.println((i) + " counts = " + frequency[i]);
        }

    }//end of displayCounts

    }//end of class

Upvotes: 29

Views: 204763

Answers (7)

Sujay Saha
Sujay Saha

Reputation: 1

public class RandomNumbers {

    public static void main(String[] args) {

        //declares array for random numbers
        int[] numbers = new int [100];

        //calls the generateNumbers method
        generateNumbers(numbers);     //passing the empty array

        //calls the displayCounts method        
        displayCounts(numbers);       //passing the array filled with random numbers 
    }

    //***************************************************************** 

    private static void generateNumbers(int[] numbers){

        for(int i = 0; i < 100; i++){
            int randomNumber;
            randomNumber = (int)(Math.random() *10);
            numbers[i] = randomNumber;
        } // here the function doesn't need to return.Since array is non primitive data type the changes done in the function automatically gets save in original array.
    }

    //***************************************************************** 

    private static void displayCounts(int[] numbers){
        int count;     
        for(int i = 0, size = 10; i < size; i++ ){
            count=0;
            for(int j = 0; j < numbers.length ; j++ ){
                if(i == numbers[j])
                count++; //counts each occurence of digits ranging from 0 to 9
            }
            System.out.println((i) + " counts = " + count);
        }

    }//end of displayCounts
}//end of class

Upvotes: -1

georgiecasey
georgiecasey

Reputation: 23381

If you get this error with Dagger Android dependency injection, first just try and clean and rebuild project. If that doesn't work, maybe delete the project .gradle cache. Sometimes Dagger just fails to generate the needed factory classes on changes.

Upvotes: 0

Ashwani Kumar Kushwaha
Ashwani Kumar Kushwaha

Reputation: 161

pass the array as a parameter when call the function, like

(generateNumbers(parameter),displayCounts(parameter))

Upvotes: 0

TheCreatingCoder
TheCreatingCoder

Reputation: 29

I think you want something like this. The formatting is off, but it should give the essential information you want.

   import java.util.Scanner;
public class BookstoreCredit 
{

   public static void computeDiscount(String name, double gpa) 
   {
      double credits;
      credits = gpa * 10;
      System.out.println(name + " your GPA is " +
         gpa + " so your credit is $" + credits);
   
   }

   public static void main (String args[]) 
   {
      String studentName;
      double gradeAverage;
      Scanner inputDevice = new Scanner(System.in);
      System.out.println("Enter Student name: ");
      studentName = inputDevice.nextLine();
      System.out.println("Enter student GPA: ");
      gradeAverage = inputDevice.nextDouble();  
      
      computeDiscount(studentName, gradeAverage);
   }
}

Upvotes: 0

Pratik Hazarika
Pratik Hazarika

Reputation: 1

The generateNumbers(int[] numbers) function definition has arguments (int[] numbers)that expects an array of integers. However, in the main, generateNumbers(); doesn't have any arguments.

To resolve it, simply add an array of numbers to the arguments while calling thegenerateNumbers() function in the main.

Upvotes: 0

PermGenError
PermGenError

Reputation: 46398

call generateNumbers(numbers);, your generateNumbers(); expects int[] as an argument ans you were passing none, thus the error

Upvotes: 3

John3136
John3136

Reputation: 29266

generateNumbers() expects a parameter and you aren't passing one in!

generateNumbers() also returns after it has set the first random number - seems to be some confusion about what it is trying to do.

Upvotes: 26

Related Questions