我试图在JAVA中获取一个函数,将数组中的值作为输入。这是我的尝试:
public static void main(String[]args)
{
int [] a = new int [4];
a[0]=6;
a[1]=7;
a[2]=5;
a[3]=2;
int g = 11;
System.out.println calc(a[0], 11);
}
public static int calc(a[], int g)
我在运行递归之前这样做。但是,我不断收到错误消息。这样做的正确方法是什么?但是,我想要函数来自数组的输入。如何使函数不仅取得任何int值,而且取自给定数组的行?
答案 0 :(得分:2)
改变这个:
public static int calc(a[], int g)
对此:
public static int calc(int value, int g)
当您执行System.out.println(calc(a[0], 11));
时,您实际上已将int
传递给函数calc
。 int
位于数组的第一个位置a[0]
。
如果要将整个数组传递给calc
,则函数签名必须为:
public static int calc(int[] a, int g)
你会这样称呼它:
System.out.println(calc(a, 11));
代码中的这一行System.out.println calc(a[0], 11);
也是错误的。它应该是:
System.out.println(calc(a[0], 11));
假设您的calc
函数具有以下内容:
public static int calc(int value, int g)
{
return value + g;
}
致电时:
System.out.println(calc(a[0], 11));
输出将是:
17
为什么17?因为你总结了[0] = 6 + 11 = 17。
a[0]
是数组的一行,您实际上是将它传递给函数calc
。
在递归的情况下,您可以使用例如索引器i
。
for(int i = 0; i < a.length; i++)
{
// You could check some condition here:
// if(a[i] > 10) { System.out.println(calc(a[i+1], 11)); }
System.out.println(calc(a[i], 11));
}
现在,当您执行此代码时,您将获得此输出:
17
18
16
13
答案 1 :(得分:0)
如果要按原样调用方法,即使用数组作为第一个参数,则必须在调用时传入数组。
而不是:
System.out.println(calc(a[0], 11));
执行:
System.out.println(calc(a, 11));
这会将整个数组作为输入传递,而不是数组中位置0的值。