类中的方法不能应用于给定类型
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中的构造函数不能应用于给定类型”错误?
接口 java.util.stream.Stream<T> 中的方法映射不能应用于给定类型;