Probleme programme java tableau

man29du56 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour
J'ai un probleme sur mon exercice de java il ne m'affiche pas le mot que saisi l'uitilisateur à l'envers.

Voici l'intitulé de l'exercice :
Ecrire alors un programme qui saisit un tableau de caractères au clavier puis
l'affiche à l'envers

Et le programme en question :

public class tableauCaractere {
public static void main(String[] argument) {
char tableauCaractere[] = new char[6];
String carac = null;
String carac2 = null;
String carac3 = null;
String carac4 = null;
String carac5 = null;
String carac6 = null;
char transi;
char transi2;
char transi3;
char transi4;
char transi5;
char transi6;

for(int i =0; i < tableauCaractere.length; i=6)
{
Scanner sc = new Scanner(System.in);
System.out.println ("Saisir un premier caractere :");
carac = sc.nextLine();
System.out.println ("Saisir un deuxieme caractere :");
carac2=sc.nextLine();
System.out.println ("Saisir un troisieme caractere :");
carac3=sc.nextLine();
System.out.println ("Saisir un quatrieme caractere :");
carac4=sc.nextLine();
System.out.println ("Saisir un cinquieme caractere :");
carac5=sc.nextLine();
System.out.println ("Saisir un sixieme caractere :");
carac6=sc.nextLine();
}
System.out.println ("tab = "+ carac + carac2 + carac3 + carac4 + carac5+ carac6);
{
transi=tableauCaractere[5];
transi2=tableauCaractere[0];
transi3=tableauCaractere[4];
transi4=tableauCaractere[1];
transi5=tableauCaractere[3];
transi6=tableauCaractere[2];
tableauCaractere[5]=transi2;
tableauCaractere[0]=transi;
tableauCaractere[4]=transi4;
tableauCaractere[1]=transi3;
tableauCaractere[3]=transi6;
tableauCaractere[2]=transi5;
System.out.print ("tab = "+ tableauCaractere[0]+tableauCaractere[1]+tableauCaractere[2]+tableauCaractere[3]+tableauCaractere[4]+tableauCaractere[5]);
}
}
}
A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

Il y a beaucoup d'erreurs dans ton programme.

1) Ta boucle
for(int i =0; i < tableauCaractere.length; i=6)
est fausse.
En faisant
i=6
comme incrément tu arrêtes immédiatement la boucle après le premier tour puisque
tableauCaractere.length
vaut 6. Il faudrait plutôt avoir
for(int i =0; i < tableauCaractere.length; i++)
i++
permet d'augmenter i de 1 en 1 et donc de faire les 6 tours de boucles attendus.

2) carac, carac1, etc. sont lus dans la boucle, mais ne sont jamais utilisés, il y a bien l'affichage de
System.out.println("tab = "
mais celui-ci est après la boucle, pas pendant... du coup comme ces valeurs ne sont jamais utilisées, le tableauCaractere n'est jamais rempli !

Remarque : pourquoi faire des copier-coller pour la lecture de chaque caractère alors que tu es dans une boucle qui permet justement de répéter cette opération ? Ici tu as 6 caractères donc c'est faisable, si tu en avais 10000 est-ce que tu ferais 10000 copier-coller ?

3) Ensuite, c'est très confus avec tes "transi", en particulier sur l'ordre :

            tableauCaractere[5] = transi2;
            tableauCaractere[0] = transi;
            tableauCaractere[4] = transi4;
            tableauCaractere[1] = transi3;
            tableauCaractere[3] = transi6;
            tableauCaractere[2] = transi5;

Certes au final c'est correct, mais est-ce que c'est vraiment le plus simple de faire 5,0,4,1,3,2 et 2,1,4,3,6,5 ? Même question que tout à l'heure si au lieu d'avoir 6 tu avais 10000, comment tu ferais ?

Il faut absolument que tu travailles sur les boucles et les tableaux, et c'est le but de cet exercice. Donc pars dans l'idée qu'au lieu d'avoir 6 caractères tu peux en avoir 10000.

Remarque : pour l'instant ce que tu lis dans ta boucle ce ne sont pas des caractères mais des String, pour lire un tableau de caractères tu peux tout simplement lire un seul String (qui est déjà un tableau de caractères).
0
man29du56 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai modifié plusieurs choses suite à vos remarques mais je ne comprend pas pourquoi mes valeurs n'entrent pas dans le tableau....

public class tableauCaractere {
public static void main(String[] argument) {
char tableauCaractere[] = {' ',' ',' ',' ',' ',' '};

for(int i =0; i < tableauCaractere.length; i++)
{
Scanner sc = new Scanner(System.in);
System.out.println ("Saisir un caractere :");
String str = sc.nextLine();
char carac = str.charAt(0);
System.out.println ("tab = "+ carac );
}
System.out.print ("tab = "+ tableauCaractere[0]+tableauCaractere[1]+tableauCaractere[2]+tableauCaractere[3]+tableauCaractere[4]+tableauCaractere[5]);
}
}
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Tu ne remplis jamais tableauCaractere avec les valeurs que tu lis au clavier...
0