Probléme avec un code java

Résolu
Signaler
Messages postés
5
Date d'inscription
mardi 11 octobre 2011
Statut
Membre
Dernière intervention
28 janvier 2012
-
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
-
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

Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
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
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
363
Bonjour,

Je ne sais pas ce qui ne va pas avec ce code (exception ? ou alors il ne donne pas le résultat attendu ?)
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
363
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();
    }
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
363
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
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
363
Ha, je ne pensais pas que cette méthode existait.

C'est sur, c'est plus simple.
Messages postés
5
Date d'inscription
mardi 11 octobre 2011
Statut
Membre
Dernière intervention
28 janvier 2012

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
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
363
Utilises la méthode de Twinuts et ton problème sera réglé...
Messages postés
5
Date d'inscription
mardi 11 octobre 2011
Statut
Membre
Dernière intervention
28 janvier 2012

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
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
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