【问题标题】: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 个数字。

标签: java arrays methods arguments


【解决方案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))
      

      【讨论】:

        猜你喜欢
        • 2019-03-22
        • 1970-01-01
        • 1970-01-01
        • 2014-03-01
        • 2016-06-20
        • 1970-01-01
        • 1970-01-01
        • 2014-03-14
        相关资源
        最近更新 更多