Java tableau

Résolu
tt - 15 oct. 2015 à 22:18
 tt - 18 oct. 2015 à 12:21
Bonjour,
j'aimerais savoir une fois que l'on a passé son tableau en paramètre on le définit dans le main.?
merci
A voir également:

9 réponses

KX
Messages postés
16567
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 juillet 2022
124
15 oct. 2015 à 23:31
Bonjour,

Est-ce que tu pourrais reformuler ta question, parce que en l'état je ne comprends pas ta demande...
0
Oui pas de problème voici le code:
Public static boolean recherche(int tableau [],int x ,int rang ) {
If( rang>=tableau.length) return false;
Else if(tableau[rang]==x) return true;
Else return recherche(?,rang+1,x);
}
Dans le main on déclare son tableau ?
Public static void main (string args []){
Int tableau[]={2.1.4};
System.out.println(recherche(?,0,x));
}

Voilà le code je ne sais pas comment faire avec ce tableau en paramètre et ou le déclarer ...
0
KX
Messages postés
16567
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 juillet 2022
124
16 oct. 2015 à 07:30
Ton tableau est déjà déclaré dans le main, tu n'as pas à le déclarer à nouveau ensuite, il faut juste l'utiliser comme tu as utilisé x et rang.

Attention : tu as mélangé le sens de x et rang.

public static boolean recherche(int tableau[], int x, int rang) {
    if (rang >= tableau.length)
        return false;
    else if (tableau[rang] == x)
        return true;
    else
        return recherche(tableau, x, rang + 1);
}

public static void main(String args[]) {
    int tableau[] = { 2, 1, 4 };
    int x = 3; // valeur à chercher
    System.out.println(recherche(tableau, x, 0));
}

Remarque : en Java on aurait plutôt tendance à écrire int[] tableau, plutôt que int tableau[], idem pour String[] args, mais c'est un détail.
0
Whismeril
Messages postés
17483
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
600
16 oct. 2015 à 20:31
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ICI

Merci d'y penser dans tes prochains messages.
0
Je te remercie j'ai encore un problème mais cette fois ci avec les array list.
c'est le même principe?
0
KX
Messages postés
16567
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 juillet 2022
124
16 oct. 2015 à 08:42
Oui, le passage de paramètre se fait de la même manière pour tout les types de données.
0
tt > KX
Messages postés
16567
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 juillet 2022

16 oct. 2015 à 08:51
si j'ai un problème je te recontacterai début d'après midi si cela te va merci
0
J'ai essayé avec les array list et ça ne fonctionne pas ...
0
public static void inte(int []TableauA,int a,int Tableau [] B,int b,ArrayList<Integer> TableauC,int c){ 
  ArrayList<Integer> TableauC = new ArrayList<Integer> ();
  if(a>=TableauA.length || b>=TableauB.length) return inte; 
   else if(TableauA[a]==TableauB[b]){
   c++;
   TableauC.add(TableauA[a]);
   ;}
  return inte(TableauA,a+1,TableauB,b+1,TableauC,c);
  
 }
public static void main(String[] args){
//déclaration tableau + system.out.println(lesparamètres)
}
0
KX
Messages postés
16567
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 juillet 2022
124
16 oct. 2015 à 20:16
C'est quoi que tu essayes de faire exactement ?

Remarque: utilises les balises de code pour mettre en forme ton programme sur le forum.

<code java></code>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
En faite je veux mettre dans une array list les valeurs d'un tableau trié pour lequel les valeurs sont identiques en gros je cherche l'intersection de deux tableaux
0
quelqu'un pour m'aider?
merci
0
KX
Messages postés
16567
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 juillet 2022
124
17 oct. 2015 à 18:08
Et tu en es où maintenant ?

Parce que vu ton dernier code ça ne te donne pas envie de t'aider d'avantage. Il faudrait au moins que tu essayes, parce que ta proposition ne compiles pas, et même si elle compilait elle ne ferait rien vu que le main est vide...

On n'est pas ici pour faire tes exercices, donc continues tes devoirs, et quand tu auras une question un peu plus précise que "J'ai essayé [...] et ça ne fonctionne pas" alors on verra pour te donner une réponse.
0
je suis là pour progresser c'est pour ça que je prend bien votre message.je ne suis pas là pour que vous fassiez mon devoir. je t'ajoute le main complété.
public static void main(String args[]){
int TableauA[]={1,2,3};
int TableauB[]={1,2,3};
int a=1;
int b=1;
int c=0;
System.out.println(inte(TableauA,a,TableauB,b,TableauC,c));
}
donc comme je le dis je suis là pour apprendre. donc comme dit j'ai fait une array list pour insérer les valeurs pour lesquels le TableauA[a]=TableauB[b].
0
quand je compile il ait marqué que le tableauC est déjà crée donc j'ai retiré :
'ArrayList<Integer> TableauC = new ArrayList<Integer> ();'
ensuite je ne comprend pas pourquoi ces erreurs sont indiqués
error: incompatible types: unexpected return value
if(a>=TableauA.length || b>=TableauB.length) return inte;
^
error: incompatible types: unexpected return value
return inte(TableauA,a+1,TableauB,b+1,TableauC,c);
^
error: cannot find symbol
System.out.println(inte(TableauA,a,TableauB,b,TableauC,c));
^
symbol: variable TableauC

3 errors
Pourquoi je ne peux pas retourner inte?
0
KX
Messages postés
16567
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 juillet 2022
124
17 oct. 2015 à 20:09
Tu ne peux pas retourner inte :
1) parce que ta méthode est marquée de type void, si tu veux renvoyer un résultat il faut indiquer de quel type il est
2) parce que inte n'existe pas, aucune variable ne porte ce nom, donc qu'est-ce qu'il faut renvoyer ?
0
donc si je comprend bien soit je remplace void par array list<Integer> vu que je renvoie le tableauC ? et la je peux laisser return non?
0
c'était bien ça.
et maintenant j'ai cette erreur.
error: cannot find symbol
System.out.println(inte(TableauA,a,TableauB,b,TableauC,c));
^
symbol: variable TableauC
0
tableauC c'est une arrayList on ne peux pas faire:
System.out.println(inte(TableauA,a,TableauB,b,TableauC,c)); ???
0
KX
Messages postés
16567
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 juillet 2022
124
17 oct. 2015 à 21:14
Le message d'erreur est pourtant explicite...

Dans le main, tu as déclaré TableauA, TableauB, a, b, c, mais pas TableauC qui n'existe donc pas... il faut le créer si tu veux le passer à ta méthode.
0
Le dernier return permet de remplir le tableauC donc je ne vois pas où le mettre
0
KX
Messages postés
16567
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 juillet 2022
124
17 oct. 2015 à 23:40
Le problème c'est le code que tu as mis après le return, c'est l'affichage de ton résultat, au départ ton println était dans le main, et ça aurait été mieux qu'il y reste.

public static ArrayList<Integer> inte(int TableauA[], int a, int TableauB[], int b, int c) {
    ArrayList<Integer> TableauC = new ArrayList<Integer>();
    if (a >= TableauA.length || b >= TableauB.length)
        return TableauC;
    else if (TableauA[a] == TableauB[b]) {
        c++;
        TableauC.add(TableauA[a]);
    }
    return inte(TableauA, a + 1, TableauB, b + 1, c);
}

public static void main(String args[]) {
    int TableauA[] = { 1, 2, 3 };
    int TableauB[] = { 1, 2, 3 };
    int a = 1;
    int b = 1;
    int c = 0;
    ArrayList<Integer> TableauC = inte(TableauA, a, TableauB, b, c);
    for (int i = 0; i < TableauC.size(); i++) {
        System.out.println(TableauC.get(i));
    }
}
0
merci pour ton aide.
mais rien n'est retourné et pourtant je pensais que ce que j'avais écrit retourne quelque chose.
0
il me retourne trois true alors que j'ai mis retourner une arraylist pas un boolean...
0
KX
Messages postés
16567
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 juillet 2022
124
18 oct. 2015 à 11:05
Je ne sais pas d'où tu sors tes trois true, mais le problème dans ton code, c'est que tu veux faire de la récursivité, en retournant inte(TableauA, a + 1, TableauB, b + 1, c); alors que celui ne contient pas la valeur de TableauC donc ce que tu as ajouté avec TableauC.add(TableauA[a]); est perdu, la seule chose que tu renvoies c'est TableauC dans le cas a >= TableauA.length || b >= TableauB.length, or il vient juste d'être créé donc il est vide...

Je te suggères de faire de la surcharge, et d'avoir une première méthode d'initialisation qui va appeler la deuxième avec plus de paramètres.

public static List<Integer> inte(int[] TableauA, int[] TableauB) {
    List<Integer> TableauC = new ArrayList<Integer>();
    inte(TableauA, 0, TableauB, 0, TableauC);
    return TableauC;
}

private static void inte(int[] TableauA, int a, int[] TableauB, int b, List<Integer> TableauC) {
    if (a >= TableauA.length || b >= TableauB.length)
        return;
    if (TableauA[a] == TableauB[b])
        TableauC.add(TableauA[a]);
    inte(TableauA, a + 1, TableauB, b + 1, TableauC);
}

public static void main(String args[]) {
    int[] TableauA = { 1, 2, 3 };
    int[] TableauB = { 1, 2, 3 };
    System.out.println(inte(TableauA, TableauB));
}

Remarque : la récursivité est loin d'être la meilleure idée dans ce genre de code, ce serait tellement plus simple avec une boucle...
0
je suis d'accord avoir toi qu'avec une boucle c'est mieux mais ces exercices sont fait pour que j'apprenne la récursivité.
0