类中的方法不能应用于给定类型

Posted

技术标签:

【中文标题】类中的方法不能应用于给定类型【英文标题】:method in class cannot be applied to given types 【发布时间】:2012-10-21 14:23:18 【问题描述】:

我正在创建一个程序,它生成 100 个介于 0 和 9 之间的随机整数并显示每个数字的计数。我正在使用一个由十个整数组成的数组,counts,来存储 0、1、...、9 的数量。)

当我编译程序时出现错误:

RandomNumbers.java:9:错误:类 RandomNumbers 中的方法 generateNumbers 不能应用于给定类型; generateNumbers();

必需:int[]

找到:generateNumbers();

原因:实际参数列表和形式参数列表的长度不同

我在 main 方法中调用方法 generateNumbers() 和 displayCounts() 的代码行出现此错误。

    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

【问题讨论】:

附带说明一下,generateNumbers 每次 i 为 0 时都会返回该值,所以它总是会跳出循环,永远不会填满数组。 另一个旁注:我想你也应该声明你的数字数组大小为 100,而不是 99。(int[] numbers = new int [100];)否则你只会打印 99 个数字。 【参考方案1】:

generateNumbers() 需要一个参数,而您没有传入一个参数!

generateNumbers() 在设置第一个随机数后也会返回 - 似乎对它试图做什么感到有些困惑。

【讨论】:

好的,我这样做了,它有效,但是当我调用 displayCounts 方法时它仍然产生错误?我试过通过频率,但没有奏效......【参考方案2】:

调用generateNumbers(numbers);,您的generateNumbers(); 期望int[]argument,而您没有传递任何信息,因此出现错误

【讨论】:

好的,我这样做了,它有效,但是当我调用 displayCounts 方法时它仍然产生错误?我试过通过频率,但没有奏效......【参考方案3】:

generateNumbers(int[] numbers) 函数定义有参数(int[] numbers),它需要一个整数数组。但是,generateNumbers(); 基本上没有任何参数。

要解决这个问题,只需在主函数中调用generateNumbers() 函数时将一个数字数组添加到参数中。

【讨论】:

【参考方案4】:

我想你想要这样的东西。格式已关闭,但它应该提供您想要的基本信息。

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

【讨论】:

【参考方案5】:

调用函数时将数组作为参数传递,比如

(generateNumbers(parameter),displayCounts(parameter))

【讨论】:

以上是关于类中的方法不能应用于给定类型的主要内容,如果未能解决你的问题,请参考以下文章

如何在Java中修复“类Rectangle中的构造函数不能应用于给定类型”错误?

类 System 中的方法退出不能应用于给定类型

接口 java.util.stream.Stream<T> 中的方法映射不能应用于给定类型;

方法不能应用于给定类型。希望得到帮助

错误:类 SpotsDialog 中的构造函数 SpotsDialog 不能应用于给定类型;

firebasex 错误:类 Builder 中的构造函数 Builder 不能应用于给定类型