Java tableau [Résolu]

Signaler
-
 tt -
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

Messages postés
15987
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 août 2020
94
Bonjour,

Est-ce que tu pourrais reformuler ta question, parce que en l'état je ne comprends pas ta demande...
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 ...
Messages postés
15987
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 août 2020
94
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.
Messages postés
14613
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 août 2020
427
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ICI

Merci d'y penser dans tes prochains messages.
Je te remercie j'ai encore un problème mais cette fois ci avec les array list.
c'est le même principe?
Messages postés
15987
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 août 2020
94
Oui, le passage de paramètre se fait de la même manière pour tout les types de données.
>
Messages postés
15987
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 août 2020

si j'ai un problème je te recontacterai début d'après midi si cela te va merci
J'ai essayé avec les array list et ça ne fonctionne pas ...
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)
}
Messages postés
15987
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 août 2020
94
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>
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
quelqu'un pour m'aider?
merci
Messages postés
15987
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 août 2020
94
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.
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].
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?
Messages postés
15987
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 août 2020
94
Et pourquoi tu ne déclares pas TableauC alors que tu as déjà déclaré tous les autres paramètres donnés à ta méthode ?
TableauC est le résultat de ma méthode donc je ne sais pas comment le déclarer.
Messages postés
15987
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 août 2020
94
Si tu n'as pas besoin d'un paramètre alors ne le mets pas comme paramètre. Donc si tu veux TableauC uniquement comme résultat de ta méthode, alors enlèves le de tes paramètres, et créé ta liste dans la méthode...
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);
for(int i=0;i<TableauC.size();i++){
System.out.println(TableauC.get(i));
}
}
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;
inte(TableauA,a,TableauB,b,c);
}
problème avec la boucle for...
Messages postés
15987
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 août 2020
94
Il faut lire les messages d'erreurs et les comprendre pour progresser.

Ici, ta boucle for est inaccessible (unreachable code) parce qu'elle est après le return, alors que le return est censé être la dernière chose à faire dans une méthode.
Le dernier return permet de remplir le tableauC donc je ne vois pas où le mettre
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é.
mon code est encore à affiner parce que l'intersection est réussite quand les deux tableaux sont identiques. mais si j'ai un tableauA égale à {2,3,4} et un TableauB égale à {1,2,3} l'intersection est égale à {2,3} donc il faudrait que je trouve un moyen pour affiner mon programme
Messages postés
15987
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 août 2020
94
Si ton programme n'est pas assez fin c'est parce que tu fais a+1 et b+1 en même temps alors qu'il faudrait distinguer différents cas, c'est à dire que tu pourrais parfois faire a, b+1 et d'autres fois a+1, b.
d'accord je crois que je viens de comprendre en gros si on a TableauA[a]=2 donc en récursif on cherche si 2 est dans le tableauB en faisant varier la position de b donc en récursif b+1.
oh miracle ça fonctionne
tellement d'heure pour comprendre cet exercice
j'espère que je vais assimiler plus rapidement les autres exercices et je te remercie pour ton aide
en gros j'ai ajouté ça:
else if (TableauB[b]>TableauA[a]) inte(TableauA, a+1, TableauB, b , TableauC);
else inte(TableauA, a, TableauB, b +1, TableauC);