2010-09-06 8 views
2

J'essaye d'obtenir une fonction dans JAVA pour prendre une valeur dans un tableau comme entrée. Voici ma tentative:Obtenir la fonction pour prendre la valeur dans le tableau comme une entrée 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) 

Je le fais avant d'exécuter une récursivité. Cependant, je reçois toujours un message d'erreur. Quelle est la bonne façon de faire cela? Je veux la fonction, cependant, à une entrée d'un tableau. Comment est-ce que j'obtiens la fonction pour prendre non seulement n'importe quelle valeur d'int mais plutôt de la rangée d'un tableau donné?

+1

Remarque: 'System.out.println calc (a [0], 11);' est incorrect. Ce devrait être 'System.out.println (calc (a [0], 11));'. Vous devez avoir des parenthèses entourant 'calc (a [0], 11)'. –

+0

La question de suivi: http://stackoverflow.com/questions/3648509/getting-a-function-to-return-two-integers-in-java –

Répondre

2

Modifier ceci:

public static int calc(a[], int g) 

à ceci:

public static int calc(int value, int g) 

Lorsque vous System.out.println(calc(a[0], 11)); vous passez en fait un int pour fonctionner calc. Ce int réside dans la première position a[0] de la matrice.

Si vous voulez passer le tableau entier à calc, votre signature de fonction doit être:

public static int calc(int[] a, int g) 

Vous appelleriez ainsi:

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

Cette ligne System.out.println calc(a[0], 11); dans votre code est aussi faux. Il devrait être:

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

Supposons que votre fonction calc a ceci:

public static int calc(int value, int g) 
{ 
    return value + g; 
} 

Lorsque vous appelez:

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

La sortie sera:

17 

Pourquoi 17 ? Parce que vous additionnez un [0] = 6 + 11 = 17.

a[0] est une ligne de la matrice et vous passez réellement à la fonction calc.

Dans le cas récursif, vous pouvez avoir et indexer i par exemple.

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)); 
} 

Maintenant lorsque vous exécutez ce code, vous aurez cette sortie:

17 
18 
16 
13 
+0

Je veux la fonction, cependant, à une entrée d'un tableau . Comment est-ce que j'obtiens la fonction pour prendre non seulement n'importe quelle valeur d'int mais plutôt de la rangée d'un tableau donné? – Spencer

+0

C'est juste ce que je vous ai montré. Voir la réponse mise à jour. –

+0

Je sais, mais je veux éventuellement écrire une fonction récursive. Donc je le veux commencer à un [0] et si cette condition n'est pas remplie, passer à un [1] etc. Donc je veux que calc prenne comme valeurs d'entrée du tableau un – Spencer

0

Si vous voulez appeler la méthode telle qu'elle est, par exemple, avec un tableau comme premier paramètre, vous devez passer le tableau lorsque vous l'appelez.

Au lieu de:

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

Do:

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

Cela passera tout le tableau en entrée, plutôt que la valeur à la position 0 dans le tableau.

Questions connexes