Java tableau [Résolu]

- - Dernière réponse :  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
Afficher la suite 

Votre réponse

9 réponses

Messages postés
15868
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 décembre 2018
0
Merci
Bonjour,

Est-ce que tu pourrais reformuler ta question, parce que en l'état je ne comprends pas ta demande...
Commenter la réponse de KX
0
Merci
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 ...
KX
Messages postés
15868
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 décembre 2018
-
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.
Whismeril
Messages postés
12410
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 décembre 2018
-
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ICI

Merci d'y penser dans tes prochains messages.
Commenter la réponse de Tt
0
Merci
Je te remercie j'ai encore un problème mais cette fois ci avec les array list.
c'est le même principe?
KX
Messages postés
15868
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 décembre 2018
-
Oui, le passage de paramètre se fait de la même manière pour tout les types de données.
> KX
Messages postés
15868
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 décembre 2018
-
si j'ai un problème je te recontacterai début d'après midi si cela te va merci
Commenter la réponse de tt
0
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)
}
KX
Messages postés
15868
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 décembre 2018
-
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>
Commenter la réponse de Tt
0
Merci
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
Commenter la réponse de Tt
0
Merci
quelqu'un pour m'aider?
merci
KX
Messages postés
15868
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 décembre 2018
-
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.
Commenter la réponse de tt
0
Merci
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].
Commenter la réponse de tt
0
Merci
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?
KX
Messages postés
15868
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 décembre 2018
-
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.
KX
Messages postés
15868
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 décembre 2018
-
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...
KX
Messages postés
15868
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 décembre 2018
-
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.
Commenter la réponse de tt
0
Merci
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
KX
Messages postés
15868
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 décembre 2018
-
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);
Commenter la réponse de Tt

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.