Probléme avec un code java

Résolu
ndiayedame Messages postés 5 Date d'inscription mardi 11 octobre 2011 Statut Membre Dernière intervention 28 janvier 2012 - 26 janv. 2012 à 16:15
Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 - 27 janv. 2012 à 23:20
Salut tous les gars j'ai problème avec un code java je sais pas ou se situe exactement l'erreur mais le code est conçu pour renverser une chaine de caractère.
Par exemple si un utilisateur donne la chaine bonjour le programme retourne ruojnob.
vioci le code:

package cahierEercice;

public class ChaineInverse {
String g[] = new String [10];
public String[] inverseChaine (String s){
String t[] = new String [s.length()];
g=t;
for(int i=s.length()-1;i>=0;i--)
t[s.length()-i-1]=t[i];
return t;
}
public void imprimeChaine (){
for(int i=0;i<g.length;i++)
System.out.print(g[i]+" ");
}

}

package cahierEercice;
import java.util.Scanner;

public class TestChaine {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Entrez la chaine de caractéres à inverser :");
Scanner s = new Scanner(System.in);
String d = s.nextLine();

ChaineInverse c = new ChaineInverse();
c.inverseChaine(d);
c.imprimeChaine();
}

}

je reste à votre écoute camarade cordialement.


ndiayedame

9 réponses

Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 110
26 janv. 2012 à 22:45
Salut,

C'est compliqué ce que vous faites... puis ça existe déjà non ?

String string = "azertyuiop";
String reverse = new StringBuilder(string).reverse().toString();

System.out.println("Before reverse: '" + string + "'.");
System.out.println("After reverse: '" + reverse + "'.");





------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
26 janv. 2012 à 18:46
Bonjour,

Je ne sais pas ce qui ne va pas avec ce code (exception ? ou alors il ne donne pas le résultat attendu ?)
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
26 janv. 2012 à 18:49
Voilà une méthode qui marche :

    public static String inverser(String s){
        StringBuilder sb = new StringBuilder();
        if(s!=null){
            for(int i=s.length()-1; i<=0; i--){
                sb.append(s.charAt(i));
            }
        }
        return sb.toString();
    }
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
26 janv. 2012 à 18:50
Je n'ai pas testé ce code et je l'ai tapé directement dans cette fenêtre il y a peut être des erreurs de frappe mais je pense que ca devrait marcher
0

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

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
27 janv. 2012 à 07:51
Ha, je ne pensais pas que cette méthode existait.

C'est sur, c'est plus simple.
0
ndiayedame Messages postés 5 Date d'inscription mardi 11 octobre 2011 Statut Membre Dernière intervention 28 janvier 2012
27 janv. 2012 à 14:13
Bonjour julien39,c'est que la compilation ne donne pas le resultat attendu,par exemple si on fourni la chaine bonjour au lieu de donner en sortie ruojnob il donne null partout

ndiayedame
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
27 janv. 2012 à 14:21
Utilises la méthode de Twinuts et ton problème sera réglé...
0
ndiayedame Messages postés 5 Date d'inscription mardi 11 octobre 2011 Statut Membre Dernière intervention 28 janvier 2012
27 janv. 2012 à 21:15
J'ai utilisé la méthode de Twinuts et ça marche à merveille. Mais je veux définir ma propre méthode comme je l'ai sur le code je veux savoir ou se trouve exactement l'erreur sur ce code parce qu'il affiche null partout au lieu du résultat attendu c'est à dire si on fourni la chaine bonjour il retourne ruojnob.
ndiayedame
0
Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 110
27 janv. 2012 à 23:20
Salut,

Pour reprendre ton code, la plus grosse erreur de fonctionnement ce trouve au niveau de ton affectation de t[i] dans t[s.length()-i-1] or t[i] ne vaut pas grand chose...certes tu as bien fait une allocation de ton tableau 't' mais tu ne l'as pas rempli donc chacune des cases est null.



...c'est que la compilation ne donne pas le resultat attendu,par exemple si on fourni la chaine bonjour au lieu de donner en sortie ruojnob il donne null partout

Je ne sais pas ce que tu as fait pour que ça ne passe pas à la compile mais en incluant la solution proposée par Julien dans ton code ça donne un truc du genre:
public class ChaineInverse {

  public String inverseChaine(final String s) {
    final StringBuilder sb = new StringBuilder();
    if (s != null) {
      // petite erreur sur la condition de fin de boucle.
      // for (int i = s.length() - 1; i <= 0; i--)
      for (int i = s.length() - 1; i >= 0; i--)
        sb.append(s.charAt(i));
    }
    return sb.toString();
  }
}


import java.util.Scanner;

public class TestChaine {

  public static void main(final String[] args) {
    System.out.println("Entrez la chaine de caractéres à inverser :");
    final Scanner s = new Scanner(System.in);
    final String d = s.nextLine();
    final ChaineInverse c = new ChaineInverse();
    System.out.println("Chaîne inversée: " + c.inverseChaine(d));
  }
}




------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
Rejoignez-nous