获取函数将数组中的值作为输入JAVA

时间:2010-09-06 00:05:06

标签: java arrays function

我试图在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值,而且取自给定数组的行?

2 个答案:

答案 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传递给函数calcint位于数组的第一个位置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的值。