6 votes

Java - Convertir les minuscules en majuscules sans utiliser toUppercase()

J'essaie de créer un petit programme qui convertirait toutes les lettres majuscules en minuscules (à partir de la ligne de commande).

Le texte suivant compile mais ne donne pas le résultat que j'attends. Quelle serait la raison de ce résultat ?

Eg) java toLowerCase BANaNa -> pour donner une sortie de banane

 public class toLowerCase{
        public static void main(String[] args){

            toLowerCase(args[0]);
        }

        public static void toLowerCase(String a){

            for (int i = 0; i< a.length(); i++){

                char aChar = a.charAt(i);
                if (65 <= aChar && aChar<=90){
                    aChar = (char)( (aChar + 32) ); 
                }

                System.out.print(a);
            }
         }   
    }

8voto

Rahul Bobhate Points 2247

Vous imprimez le String a sans le modifier. Vous pouvez imprimer les chars directement dans la boucle comme suit :

public class toLowerCase
{
    public static void main(String[] args)
    {
        toLowerCase(args[0]);
    }

    public static void toLowerCase(String a)
    {
        for (int i = 0; i< a.length(); i++)
        {
            char aChar = a.charAt(i);
            if (65 <= aChar && aChar<=90)
            {
                aChar = (char)( (aChar + 32) ); 
            }
            System.out.print(aChar);
         }
     }
}

2voto

Habib Points 93087

Ça ressemble à des devoirs pour moi, juste un indice. Tu imprimes une chaîne de caractères a alors que vous modifiez le char type aChar il ne modifie pas la chaîne originale a . (Rappelez-vous que les chaînes de caractères sont immuables).

2voto

Peter Lawrey Points 229686

Une façon plus propre d'écrire ce code est

public static void printLowerCase(String a){
    for(char ch: a.toCharArray()) {
       if(ch >= 'A' && ch <= 'Z')
          ch += 'a' - 'A';
       System.out.print(ch);
    }
}

Remarque : cela ne fonctionnera pas pour les caractères majuscules dans toute autre gamme. (Il y en a des milliers)

1voto

akshar Points 2286
public static void toLowerCase(String a){

    String newStr = "";

    for (int i = 0; i< a.length(); i++){

        char aChar = a.charAt(i);
        if (65 <= aChar && aChar<=90){
            aChar = (char)( (aChar + 32) ); 
        }
        newStr = newStr + aChar;    
    }
    System.out.println(newStr);
}

Vous devez imprimer newStr à l'extérieur pour la boucle. Vous essayiez de l'imprimer à l'intérieur de la boucle

1voto

Robert Bolton Points 137

On dirait que tu es proche. :)

Pour commencer...

char aChar = a.charAt(i);

"a" est un tableau de chaînes de caractères, donc je crois que vous voulez itérer sur chaque élément.

char aChar = a[i].charAt(0);

et il semble aussi que vous vouliez retourner la valeur de la variable modifiée, et non de "a" qui était la variable passée à l'origine.

System.out.print(aChar);

pas

System.out.print(a);

J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X