为啥在计算整数数组的最小值时会出现“实际或形式参数列表长度不同”的错误?
Posted
技术标签:
【中文标题】为啥在计算整数数组的最小值时会出现“实际或形式参数列表长度不同”的错误?【英文标题】:Why do I get an error with reason "Actual or formal argument lists differs in length" when I calculate the minimum of an integer array?为什么在计算整数数组的最小值时会出现“实际或形式参数列表长度不同”的错误? 【发布时间】:2020-10-20 04:05:29 【问题描述】:我收到编译时错误
method min in class RandomArray cannot be applied to given types;
System.out.println(table.min());
^
required: int[]
found: no arguments
reason: actual and formal argument lists differ in length
但我不明白为什么会得到它?
这是我的代码
import java.util.Scanner;
import java.util.Random;
public class RandomArray
private int data[];
private int value;
public RandomArray(int x)
Random gen = new Random();
data = new int[x];
for (int index = 0; index < x; index++)
data[index] = gen.nextInt(x);
public String toString()
String output = "";
for (int i = 0; i < data.length; i++)
output += data[i];
return output;
public static int min(int[] x)
int min = Integer.MAX_VALUE;
for (int i = 0; i < x.length; i++)
if (x[i] < min)
min = x[i];
return min;
public static void main(String[] args)
Scanner scan = new Scanner(System.in);
int x;
int data;
System.out.println("please enter the number of integers you would like to create an array for");
x = scan.nextInt();
RandomArray table = new RandomArray(x);
System.out.println(table.toString());
System.out.println(table.min());
【问题讨论】:
min 方法需要一个参数,而您没有给出任何参数。但也许那个方法不应该有任何参数,不是静态的,并且计算数据的最小值? 可以放完整代码吗? 是的,它不应该是静态的。没有争论是什么意思?我的想法是我通过它传递数组'x',但它不接受数组'x'。 这就是所有的代码 不,您没有在table.min()
中传递数组x,否则它将是table.min(x)
!但这可能不是你应该做的。
【参考方案1】:
正如 cmets 中的其他人指出的那样,您会收到此错误
Error:(49, 33) java: method min in class RandomArray cannot be applied to given types;
required: int[]
found: no arguments
reason: actual and formal argument lists differ in length
因为您在使用table.min()
调用时调用了声明的public static int min(int[] x)
方法而不传递参数!因此actual and formal argument lists differ in length
。
(其中actual
指调用table.min()
的方法参数,一个长度为0 的参数列表,formal
指声明的方法int min(int[] x)
具有长度为1 的参数列表)。
根据您的代码,您想要传递给min
方法的参数实际上是您的类RandomArray
的成员变量——数组int data[]
。因此,您不应将任何参数传递给您的 min
方法,而是使其直接在您的 data []
数组上操作,如
public int min()
int min = Integer.MAX_VALUE;
for (int i = 0; i < data.length; i++)
if (data[i] < min)
min = data[i];
return min;
请注意,当您希望类中的方法对 非静态成员变量(例如 private int data[];
数组)进行操作时,您需要将该方法设为非static
。
(就风格而言,而不是 C 风格的数组声明 int data[]
更喜欢 Java 风格的声明 int[] data
)。
把它们放在一起就得到了
import java.util.Arrays;
import java.util.Scanner;
import java.util.Random;
public class RandomArray
private int[] data;
public RandomArray(int x)
Random gen = new Random();
data = new int[x];
for (int index = 0; index < x; index++)
data[index] = gen.nextInt(x);
public String toString()
return Arrays.toString(data);
public int min()
int min = Integer.MAX_VALUE;
for (int i = 0; i < data.length; i++)
if (data[i] < min)
min = data[i];
return min;
public static void main(String[] args)
Scanner scan = new Scanner(System.in);
System.out.println("please enter the number of integers you would like to create an array for");
int x = scan.nextInt();
RandomArray table = new RandomArray(x);
System.out.println(table.toString());
System.out.println(table.min());
给你输出
please enter the number of integers you would like to create an array for
10
[9, 3, 3, 9, 2, 9, 2, 9, 5, 4]
2
【讨论】:
以上是关于为啥在计算整数数组的最小值时会出现“实际或形式参数列表长度不同”的错误?的主要内容,如果未能解决你的问题,请参考以下文章
为啥在使用 statsmodels 预测测试值时会收到此 numpy 错误?
为啥 ofstream 在存储字符串的值时会避免前 4 个字符?