Получение функции для получения значения в массиве в качестве входного JAVA - PullRequest
2 голосов
/ 06 сентября 2010

Я пытаюсь получить функцию в 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 ]

2 голосов
/ 06 сентября 2010

Измените это:

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.

* 1040.* В рекурсивном случае у вас может быть, например, индексатор 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
0 голосов
/ 06 сентября 2010

Если вы хотите вызвать метод таким, какой он есть, то есть с массивом в качестве первого параметра, то вы должны передать массив при его вызове.

Вместо:

System.out.println(calc(a[0], 11));

Do:

System.out.println(calc(a, 11));

Это передаст весь массив как ввод, а не значение в позиции 0 в массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...