Probleme programme java tableau

Fermé
man29du56 Messages postés 2 Date d'inscription dimanche 4 octobre 2015 Statut Membre Dernière intervention 4 octobre 2015 - 4 oct. 2015 à 12:06
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 4 oct. 2015 à 16:39
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 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
4 oct. 2015 à 12:42
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 dimanche 4 octobre 2015 Statut Membre Dernière intervention 4 octobre 2015
4 oct. 2015 à 16:20
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 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
4 oct. 2015 à 16:39
Tu ne remplis jamais tableauCaractere avec les valeurs que tu lis au clavier...
0